深入剖析ASP.NET 2.0缓冲机制
经在web.config文件中定义,那么,SqlDataSource控件就能够借助于下列声明来使用这个连接字符串:
上面的代码检索定义在Northwind连接字符串元素的connectionString属性中的连接字符串值。 SqlDataSource控件还要把EnableCaching属性设置为true,这样会使SqlDataSource自动地缓冲通过SelectCommand检索的数据。这个CacheDuration属性能够使你指定(以秒为单位)在数据从数据库中刷新之前应该被缓冲多长时间。默认情况下,SqlDataSource将使用一种绝对过期策略来缓存数据;这意味着,数据每隔在CacheDuration属性中指定的秒数刷新一次。 你还可以选择性配置让SqlDataSource使用一种“滑动式”过期策略。通过这种策略,只要数据继续被存取,它就不会被删除。当你有大量需要被缓冲的项时,使用滑动过期策略非常有用,因为该策略能够使你在内存中仅保持被最频繁访问的项。在上面的示例中,通过分别把EnableCaching和CacheDuration属性设置为True和10,你缓冲SQL查询结果的时间期限为10秒。 三、在SqlDataSource控件中的SQL缓存无效 到目前为止,你已看到了如何使基于在SqlDataSource控件中的CacheDuration属性中设定的持续时间值缓存无效。在本节中,我将解释基于SQL Server表中的数据实现一个缓存无效机制的步骤。这种缓存无效机制是ASP.NET 2.0的一个新特征,这时一个缓冲页面或一个数据源控件能够被绑定到一个SQL Server数据库中的某一个特定表上。一旦你实现这种初始化的关联操作,那么,改变该表的内容将导致缓冲的对象自动无效。 【建议】当你需要在多个页面中使用相同的数据库数据时,你应该考虑使用数据源控件的SQL缓存无效机制。 其实,基于SQL Server的缓存无效机制适用于SQL Server 7.0及以上版本;但是,SQL Server 7.0和2000仅支持表级的缓存无效机制。这意味着,当任何时间表中的数据改变时,缓冲的项被自动地无效。SQL Server 2005还提供了一种行级缓存无效机制,这可以在一种更细的级别上来控制缓冲数据。 在SQL Server 7和SQL Server 2000中,表级缓存无效是通过使用一种查询系统(一个特定的ASP.NET进程)支持的。该进程每隔特定的时间查询数据库(“拉”模型)以监视自从上次被检查以来哪些表发生了变化。尽管这种拉模型能够适合于大多数情形,但是它并不是一种非常有效的方法。幸好,这种情形在SQL Server 2005中得到了大大增强—无论何时修改一个特定的数据行,实际上都由SQL Server负责通知(推模型)ASP.NET。SQL Server 2005通过使用一个称为通知提交服务(Notification Delivery Services,它使用80端口)的特征实现这一功能,该服务能够直接与IIS6.0的HTTP.SYS进行交互以通知Web服务器更新特定的行。接下来,我将解释如何为SQL Server 7和2000版本配置缓冲。 在你能够使用SQL Server 7或SQL Server 2000建立缓存依赖性之前,你需要完成下列步骤: ◆配置SQL Server以支持SQL缓存无效。这只需要一次性建立你想监视的SQL Server数据库中的表或数据库即可。 ◆把必要的配置信息添加到web.config文件。 下面,让我们详细分析上面的步骤。首先,我们来看一下SQL Server的配置问题。 四、配置SQL Server以支持SQL缓存无效 你可以以下列两种方式实现SQL Server 2000配置以支持SQL缓存无效: 1.使用aspnet_regsql工具; 2.使用SqlCacheDependencyAdmin类的EnableTableForNotifications方法。 在本文中,我们仅考虑第一种方法。上面的aspnet_regsql工具负责创建另外一个表AspNet_SqlCacheTablesForChangeNotification,用于跟踪改变数据库中的所有被监视的表的变化;它还创建一组触发器和存储过程来支持这种能力。为了运行aspnet_regsql工具,只 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |