【新手】文章
为提高页面性能,对数据进行缓存是个不错的办法,但我们以前在页头加上<%@ OutputCache VaryByParam="none" Duration="60" %>,这个确实对数据进行缓存了,但不能及时更新,要等到设置的时间失效才会显示最新的数据,我想这样的话索性不用它。但为了性能,我不得不找寻办法。
我想要是缓存能够根据数据的变化而更新的话,那就太好了,后来,我找到了sqlCachedependency【数据缓存依赖】,花了半天的时间把它拿下。
下面是sqlCachedependencyd的配置方法:
1.打开命令窗口。
点击:开始 - 所有程序 - visual studio 2008 - visual studio tool - 命令提示
2.输入命令提示符。
aspnet_regsql -S localhost -U sa -P sa -d databasename -t articles -et
localhost - 数据库服务器,sa - 账号,sa - 密码, databasename - 数据库, articles - 表名 -et表示允许对数据表采用sqlcachedependency功能,具体参数见下表:
参数意义 | |
-? | 显示该工具的帮助功能. |
-S | 后接的参数为数据库服务器的名称或者IP地址 |
-U | 后接的参数为数据库的登陆用户名. |
-P | 后接的参数为数据库的登陆密码 |
-E | 当使用windows集成验证时,使用该功能 |
-t | 后接参数为对哪一个表采用sqlcachedependency功能。 |
-d | 后接参数为对哪一个数据库采用sqlcachedependency功能 |
-ed | 允许对数据库使用sqlcachedependency功能 |
-dd | 禁止对数据库采用sqlcachedependency功能 |
-et | 允许对数据表采用sqlcachedependency功能 |
-dt | 禁止对数据表采用sqlcachedependency功能 |
-lt | 列出当前数据库中有哪些表已经采用sqlcachedependency功能 |
在执行此操作后,数据库中会自动增加一张表和相关的存储过程
3.配置web.config 文件:
在system.web节点增加caching节点,如下:
<connectionStrings>
<add name="ConnStr" connectionString="server=.; uid=sa; pwd=sa; database=Education; pooling=true; min pool size=0; max pool size=2000; load balance timeout=600;" providerName="System.Data.SqlClient"/>
</connectionStrings>
<system.web>
<caching> <sqlCacheDependency enabled="true" pollTime="10000"> <databases> <add name="sqlCache" connectionStringName="ConnStr" [注:此处为连接字符串的名称]
pollTime="10000" [缓存时间-10分钟]/> </databases> </sqlCacheDependency> </caching>
</system.web>
配置web.config完毕
4.在需要缓存页面如web.aspx的页头添加如下代码:
<%@ OutputCache VaryByParam="none" Duration="60" SqlDependency="sqlCache:articles" %>
说明:sqlCache 为web.config文件 databases节点的name,这里需要一致,articles 为使用缓存依赖的表
5.建一个项目测试,放一个文本控件Label,在后台把它赋值为当前时间,
再在下面放一张表,显示articles文章表的数据,刷新,看效果,看label的值是否变化,多试几
次,再到articles 表里修改一下数据,再刷新,看label的值又是否变化
6. OK 拉
若有问题,请留言!