缓存——能非常好的提高网站的性能。

在訪问量大,但更新较少的站点中使用缓存,能够大大提高执行效率。

在.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 后接的參数为数据库server的名称或者IP地址;

-U 后接的參数为数据库的登陆username。

-P 后接的參数为数据库的登录password;

-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>
  4. <!--5秒种轮询一次-->
  5. <sqlCacheDependency enabled="true" pollTime="5000">
  6. <databases>
  7. <add  name="CacheDB" connectionStringName="SQLServer"/>
  8. </databases>
  9. </sqlCacheDependency>
  10. </caching>
  11. </system.web>

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

三、代码实现

1、 对页面输出缓存使用轮询SQL缓存依赖

    依据上面的web.config配置

    在要缓存的页面中  <%@ OutputCache Duration="6000" VaryByParam="none" SqlDependency="CacheDB:CacheTable" %>  CacheTable为数据表

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

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

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

[c-sharp] view
plain
copy

  1. //这里用GridView对数据进行绑定
  2. public void BindData()
  3. {
  4. string[] tableName = new string[]{"Cache","CacheTable" };//这里用cache表和CacheTable表,cache表的数据库的依赖建立方法如cacheTable。
  5. AggregateCacheDependency aggregateDependency = new AggregateCacheDependency();//实例化AggregateCacheDependency,用于多个实例SqlCacheDependency的载入
  6. DataSet ds = Cache["gridview"] as DataSet;//从缓存中读取数据
  7. if (ds == null)
  8. {
  9. ds = DBHelper.ExecuteAdapter("select * from CacheTable inner join Cache on CacheTable.ID=Cache.cacheID");//从数据库中读取数据 。返回DataSet,ExecuteAdapter用的SQLHelper中的訪问方法
  10. foreach (string table in tableName)
  11. {
  12. aggregateDependency.Add(new SqlCacheDependency("Cache", table));//把依赖实例载入到数组中
  13. }
  14. // SqlCacheDependency Dependency = new SqlCacheDependency("Cache","CacheTable");//对单个表依赖缓存 直接实例化
  15. Cache.Insert("gridview", ds, aggregateDependency);//加入到缓存中
  16. Response.Write(DateTime.Now.ToString());//输出当前时间,以測试是否缓存成功,
  17. }
  18. GridView1.DataSource = ds;
  19. GridView1.DataBind();
  20. }

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

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

.Net中的缓存依赖配置的更多相关文章

  1. asp.net mvc5中使用缓存依赖SqlCacheDependency

    缓存是用来提高应用性能,降低服务器压力.适用于数据不易变,数据易通用的情景, 对于动态查询数据,例如数据分析,最好放弃使用缓存.使用缓存最麻烦的就是保持源数据和缓存的中的数据一致. 缓存(Cache) ...

  2. asp.net mvc中应用缓存依赖文件(xml)的一个小demo

    最近项目中加了一个通用模块,就是根据一些特殊的tag,然后根据处理这些tag在同一个视图中加载不同的model(个人觉得此功能无任何意义,只是把不同的代码放在了同一个View中). 我的处理思路是这样 ...

  3. ASP.NET缓存全解析5:文件缓存依赖 转自网络原文作者李天平

    这种策略让缓存依赖于一个指定的文件,通过改变文件的更新日期来清除缓存. ///<summary> /// 获取当前应用程序指定CacheKey的Cache对象值 ///</summa ...

  4. Asp.net文件缓存依赖

    Asp.net文件缓存依赖 using System; using System.Collections.Generic; using System.Linq; using System.Web; u ...

  5. 缓存技术之——Yii2性能优化之:缓存依赖

    Yii中的缓存依赖,简单来说就是将缓存和另外一个东西绑定在一起,如果另外一个东西发生变化,那么缓存也将发生变化.有点儿类似于JS中的触发事件(但是也不那么像),缓存的变动是依赖的东西所导致的. 依赖可 ...

  6. Django分别使用Memcached和Redis作为缓存的配置(Linux环境)

    1 使用memcached 1.1 安装memcached 安装(Linux) sudo apt install memcached 启动 #方式一: service memcached start ...

  7. Asp.Net Core 轻松学-在.Net Core 使用缓存和配置依赖策略

    前言     几乎在所有的应用程序中,缓存都是一个永恒的话题,恰当的使用缓存可以有效提高应用程序的性能:在某些业务场景下,使用缓存依赖会有很好的体验:在 Asp.Net Core 中,支持了多种缓存组 ...

  8. Spring Boot中的缓存支持(一)注解配置与EhCache使用

    Spring Boot中的缓存支持(一)注解配置与EhCache使用 随着时间的积累,应用的使用用户不断增加,数据规模也越来越大,往往数据库查询操作会成为影响用户使用体验的瓶颈,此时使用缓存往往是解决 ...

  9. django缓存优化中caches参数如何配置?

    在python开发中,如果运营django进行编写,为了提升效率,常常需要优化缓存,缓存优化中必须掌握的caches参数相关知识: CACHES 配置参数概述 - 格式 CACHES 字典配置格式如下 ...

随机推荐

  1. 紫书 例题 10-12 UVa 1637(概率计算)

    以9元组来代表当前状态,每一元是每一堆剩下的牌数 枚举当前状态所有可以拿掉牌的情况,然后递归下去求 概率,当牌拿完的时候概率为1 那么这里的实现非常的秀,用到了vector来代表9元组 然后还用到了m ...

  2. HTML学习----------DAY1 第三节

    本章通过实例向您演示最常用的 HTML 标签. 提示:不要担心本章中您还没有学过的例子,您将在下面的章节中学到它们. 提示:学习 HTML 最好的方式就是边学边做实验.我们为您准备了很好的 HTML ...

  3. 浅谈Python Web的五大框架

    说到Web Framework,Ruby的世界Rails一统江湖,而Python则是一个百花齐放的世界.各种micro-framework.framework不可胜数. 尽管还有一大脚本语言PHP也有 ...

  4. 【cocos2d-x 3.7 飞机大战】 决战南海I (四) 敌机管理

    敌方飞机应该不定时的出现,有自己的生命周期.运动轨迹.这个类用来管理敌机的产生.移动.爆炸.销毁等. 敌机管理类主要函数例如以下 //绑定控制器(更新分数) void bindController(C ...

  5. Ubuntu常见报错及解决方式汇总

    作者:郭孝星 微博:郭孝星的新浪微博 邮箱:allenwells@163.com 博客:http://blog.csdn.net/allenwells Github:https://github.co ...

  6. 泛泰A820L (高通MSM8660 cpu) 3.4内核的CM10.1(Android 4.2.2) 測试版第二版

    欢迎关注泛泰非盈利专业第三方开发团队 VegaDevTeam  (本team 由 syhost suky zhaochengw(z大) xuefy(大星星) tenfar(R大师) loogeo cr ...

  7. DNS隧道和工具

    DNS Tunneling及相关实现 转自:http://www.freebuf.com/sectool/112076.html DNS Tunneling,是隐蔽信道的一种,通过将其他协议封装在DN ...

  8. spring配置 quartz-config.xml

    <!-- 配置调度程序quartz ,其中配置JobDetail有两种方式--> <!-- 使用MethodInvokingJobDetailFactoryBean,任务类可以不实现 ...

  9. 洛谷P3355 骑士共存问题

    题目描述 在一个 n*n个方格的国际象棋棋盘上,马(骑士)可以攻击的棋盘方格如图所示.棋盘上某些方格设置了障碍,骑士不得进入 对于给定的 n*n 个方格的国际象棋棋盘和障碍标志,计算棋盘上最多可以放置 ...

  10. centos 5的yum源无法使用的解决方法( 转载)

    由于centos 5 已经停更.于是导致yum源也不能用了. 例如安装screen的时候提示 Determining fastest mirrors* base: denver.gaminghost. ...