ASP.NET2.0数据缓存的使用

     通常,应用程序可以将那些频繁访问的数据,以及那些需要大量处理时间来创建的数据存储在内存中,从而提高性能。例如,如果应用程序使用复杂的逻辑来处理大量数据,然后再将数据作为用户频繁访问的报表返回,避免在用户每次请求数据时重新创建报表可以提高效率。同样,如果应用程序包含一个处理复杂数据但不需要经常更新的页,则在每次请求时服务器都重新创建该页会使工作效率低下。

      在这些情况下,为了提高应用程序的性能,ASP.NET 使用两种基本的缓存机制来提供缓存功能。第一种机制是应用程序缓存,它允许您缓存所生成的数据,如 DataSet 或自定义报表业务对象。第二种机制是页输出缓存,它保存页处理输出,并在用户再次请求该页时,重用所保存的输出,而不是再次处理该页。

      本文主要介绍怎么使用页面缓存:

      一、为 SQL 缓存通知启用数据库和数据库表(启用缓存数据所依赖的数据库和表)

      在命令行中输入如下命令:

C:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/aspnet_regsql.exe -S 服务器地址(可以为.或localhost) -U 用户名 -P 密码-ed -d 数据库名  -et -t 表名 

aspnet_regsql命令的参数介绍(要注意参数的大小写):

参数参数意义
-? 显示该工具的帮助功能.
-S 后接的参数为数据库服务器的名称或者IP地址,如 ./INSTANCENAME
-U 后接的参数为数据库的登陆用户名.
-P 后接的参数为数据库的登陆密码
-E 当使用windows集成验证时,使用该功能
-t 后接参数为对哪一个表采用sqlcachedependency功能。
-d 后接参数为对哪一个数据库采用sqlcachedependency功能
-ed 允许对数据库使用sqlcachedependency功能
-dd 禁止对数据库采用sqlcachedependency功能
-et 允许对数据表采用sqlcachedependency功能
-dt 禁止对数据表采用sqlcachedependency功能
-lt 列出当前数据库中有哪些表已经采用sqlcachedependency功能

      下图是用aspnet_regsql 命令来通知SQL Server,启用本地服务器中的数据库hyEQArch中表T_Ups的缓存。数据库服务器用户名是sa,密码为空。 

     当完成上述操作后,可以在数据库中发现,多了一个表AspNet_SqlCacheTablesForChangeNotification,该表中存储了需要缓存的表的信息:tablename表示要进行缓存的数据库表名,notificationCreated是开始追踪的时间,changeId是指该表已经变化了多少次,int型的,该表的数据每变化一次,该字段值就加1。

表AspNet_SqlCacheTablesForChangeNotification

     二、在应用程序web.config文件中配置sqlCacheDependency缓存

     配置示例代码如下:

   

    需要注意的几点:1.pollTime参数是指设置系统多长时间去检查一次cache中的数据是否需要更新,其单位是毫秒(ms),最小值是500;2.<databases>节点中name是指要缓存的数据库名称,connectionStringName是数据库连接字符串的名称,必须与上面<connectionStrings>中申明的名称一致。 

     三、在页面文件中申明和设置缓存

     参数说明:Duration表示缓存的时间,单位是秒;VaryByParam表示获取查询字符串或窗体 POST 参数的逗号分隔列表,该列表由输出缓存用来改变缓存项。如果没有参数的话,应该将值设置为none;SqlDependency标识缓存项依赖的一组数据库和表名称对。如果更新或更改了表的数据,则缓存项过期。其赋值形式“数据库名:表名,数据库名:表名”,其中的数据库名必须与第二步web.config的文件中.<databases>节点申明的数据库名称一致,表名则必须是第一步中启用的缓存依赖的表。 

      这样,数据缓存就设置好了,系统会根据上述步骤中设置的缓存时间来进行数据的缓存。

上面示例操作中,页面的缓存时间是25秒,而系统自动隔10000毫秒(10秒)去跟踪一下申明的数据库中表的数据是否有变化,并根据实际去修改缓存。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值