加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

.Net中的缓存依赖配置

发布时间:2020-12-13 22:49:20 所属栏目:百科 来源:网络整理
导读:缓存——能很好的提高站点的性能。 在访问量大,但更新较少的网站中使用缓存,可以大大提高运行效率; 在.net中给我们提供了很好的缓存机制,页面缓存、数据缓存,还有很好的依赖缓存。 依赖缓存好处就是,跟相依赖的项的改变有关,比如cacheTable表有数据改变

缓存——能很好的提高站点的性能。

在访问量大,但更新较少的网站中使用缓存,可以大大提高运行效率;

在.net中给我们提供了很好的缓存机制,页面缓存、数据缓存,还有很好的依赖缓存。

依赖缓存好处就是,跟相依赖的项的改变有关,比如cacheTable表有数据改变时,数据已经缓存了的就会被清楚,重新读取新的数据,能保持数据的实时更新。

头几天学习了下sql 依赖缓存,实现过程和步骤记录下:

环境:windows 2003+IIS6,SQL2008+VS2008

一、首先在sql2008中创建数据库CacheDB,创建表CacheTable

然后在Visual Studio 命令提示下 运行aspnet_regsql.exe 应用程序(也可以在cmd下找到C:/Program Files/Microsoft Visual Studio 9.0/VC>运行)

直接运行asp.net_regsql.exe创建的是选择的数据库的其他特性表,如:aspnet_Roles 等。

下面以数据库CacheDB,数据表CacheTable为例;

要创建数据库的依赖缓存 须运行如下命令:

aspnet_regsql -S localhost -U sa-P 123456 -d CacheDB -ed //打开依赖的数据库,然后在创建依赖数据表

aspnet_regsql -S localhost -U sa -P 123456 -d CacheDB -et -t CacheTable //创建依赖数据表

当运行以上命令后会出现数据表: AspNet_SqlCacheTablesForChangeNotification

aspnet_regsql 命令参数说明:

-? 显示该工具的帮助功能;

-S 后接的参数为数据库服务器的名称或者IP地址;

-U 后接的参数为数据库的登陆用户名;

-P 后接的参数为数据库的登陆密码;

-E 当使用windows集成验证时,使用该功能;

-d 后接参数为对哪一个数据库采用SqlCacheDependency功能;

-t 后接参数为对哪一个表采用SqlCacheDependency功能;

-ed 允许对数据库使用SqlCacheDependency功能;

-dd 禁止对数据库采用SqlCacheDependency功能;

-et 允许对数据表采用SqlCacheDependency功能;

-dt 禁止对数据表采用SqlCacheDependency功能;

-lt 列出当前数据库中有哪些表已经采用sqlcachedependency功能。

以上步骤是在数据库方面要实现处理的

二、配置网站的web.config

在system.web 节点中添加,缓存配置,代码如下

这中方式主要是采用数据查询轮询的方式

[xhtml] view plain copy
  1. <system.web>
  2. <!--依赖缓存-->
  3. caching<!--5秒种轮询一次-->
  4. sqlCacheDependencyenabled="true"pollTime="5000" databases>
  5. addname="CacheDB"connectionStringName="SQLServer"/>
  6. </
  7. sqlCacheDependency>

参数说明:pollTime:轮换的时间 (毫秒),"CacheDB" :为依赖的数据库,SQLServer :为数据库连接字符串,connectionStringName中的。

三、代码实现

1、 对页面输出缓存使用轮询SQL缓存依赖
根据上面的web.config配置
在要缓存的页面中 <%@ OutputCache Duration="6000" VaryByParam="none" SqlDependency="CacheDB:CacheTable" %> CacheTable为数据表

当CacheTable数据表有改动时,刷新后会显示新的数据。

2、对数据缓存使用轮询SQL缓存依赖

对多个表实现依赖缓存,代码如下:

[c-sharp] copy
    //这里用GridView对数据进行绑定
  1. publicvoidBindData()
  2. {
  3. string[]tableName=newstring[]{"Cache","CacheTable"};//这里用cache表和CacheTable表,cache表的数据库的依赖建立方法如cacheTable。
  4. AggregateCacheDependencyaggregateDependency=newAggregateCacheDependency();//实例化AggregateCacheDependency,用于多个实例SqlCacheDependency的加载
  5. DataSetds=Cache["gridview"]asDataSet;//从缓存中读取数据
  6. if(ds==null)
  7. {
  8. ds=DBHelper.ExecuteAdapter("select*fromCacheTableinnerjoinCacheonCacheTable.ID=Cache.cacheID");//从数据库中读取数据,返回DataSet,ExecuteAdapter用的SQLHelper中的访问方法
  9. foreach(stringtableintableName)
  10. aggregateDependency.Add(newSqlCacheDependency("Cache",table));//把依赖实例加载到数组中
  11. }
  12. //SqlCacheDependencyDependency=newSqlCacheDependency("Cache","CacheTable");//对单个表依赖缓存直接实例化
  13. Cache.Insert("gridview",ds,aggregateDependency);//添加到缓存中
  14. Response.Write(DateTime.Now.ToString());//输出当前时间,以测试是否缓存成功,
  15. GridView1.DataSource=ds;
  16. GridView1.DataBind();
  17. }

以上代码为在数据缓存中使用的依赖缓存

注意:在web.config 中的DBCahce 和页面输出缓存中的DBCache:cahceTabel中 变量的大小写要与在用aspnet_regsql.exe建立 数据缓存那大小写一样

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读