缓存依赖主要提供以下功能:
1.SQL 缓存依赖项可用于应用程序缓存和页输出缓存。
2.可在 SQL Server 7.0 及更高版本中使用 SQL 缓存依赖项。
3.可以在网络园(一台服务器上存在多个处理器)或网络场(多台服务器运行同一应用程序)中使用 SQL 缓存依赖项。
4.与 SQL 缓存依赖项关联的数据库操作比较简单,因此不会给服务器带来很高的处理成本。

现在把与缓存依赖相关的对象集合如下,并对差异性进行了一定程度的分析……
        缓存依赖主要由3个核心类来实现:CacheDependency、AggregateCacheDependency、SqlCacheDependency。CacheDependency 类是 AggregateCacheDependency 类和 SqlCacheDependency 类的父类。

CacheDependency跟踪缓存依赖项,缓存依赖项可以是应用程序的 Cache 中的文件、目录或与其他对象的键,可用于实现自定义缓存依赖。//对文件可起作用。

SqlCacheDependency类在所有受支持的 SQL Server 版本 (7.0, 2000, 2005) 上监视特定的 SQL Server 数据库表,以便在该表发生更改时,自动从 Cache 中删除与该表关联的项。数据库表发生更改时,将自动删除缓存项,并向 Cache 中添加新版本的项。在使用 SQL Server 2005 数据库时,SqlCacheDependency 类还支持与 System.Data.SqlClient.SqlDependency 类进行集成。使用 SQL Server 2005 的查询通知机制来检测使 SQL 查询结果无效的数据更改。与 SQL 查询关联的任何缓存项都将从 System.Web.Caching.Cache 中移除。在使用 SQL Server 2005 时,可以使用 SqlCacheDependency 类向应用程序的 Cache 添加依赖于 SQL Server 数据库表或 SQL 查询的项。//对数据表的支持

AggregateCacheDependency类监视依赖项对象的集合,以便在任何依赖项对象更改时,该缓存项都会自动移除。数组中的对象可以是CacheDependency或者SqlCacheDependency对象、从CacheDependency派生的自定义对象或这些对象的任意组合.

AggregateCacheDependency类与CacheDependency类的不同之处在于前者允许您将不同类型的多个依赖项与单个缓存项关联。例如,如果您创建一个从 SQL Server 数据库表和 XML 文件导入数据的页,则可创建一个SqlCacheDependency对象来表示数据库表的依赖项,以及一个CacheDependency来表XML 文件的依赖项。可创建 AggregateCacheDependency类的一个实例,将每个依赖项添加到该类中,而不是为每个依赖项调用 Cache.Insert 方法。然后,可使用单个Insert 调用使该页依赖于 AggregateCacheDependency实例。

其中,本章主要讲述CacheDependency的用法。

CacheDependency有几中重载,各作用如下。

//假设缓存的来源文件是当前目录下的data.xml文件

//缓存依赖的文件路径
    CacheDependency mydep = new CacheDependency("data.xml");

//缓存依赖的文件可以有多个
    CacheDependency mydep1=new CacheDependency(new string []{"data.xml","data1.xml"});

//检查缓存依赖更改的依据时间
    CacheDependency mydep2 = new CacheDependency("data.xml", DateTime.Now);

//检查多个依赖文件更改的依据时间
    CacheDependency mydep3 = new CacheDependency(new string[] { "data.xml", "data1.xml" }, DateTime.Now);

//检查依赖多个文件,也依赖多个缓存键值
    CacheDependency mydep4 = new CacheDependency(new string[] { "data.xml", "data1.xml" },new string[] { "Category", "Category1" });

//关联依赖,还可以依赖于另一个文件缓存依赖
    CacheDependency mydep5 = new CacheDependency(new string[] { "data.xml", "data1.xml" },new string[] { "Category", "Category1" }, mydep);

//文件和键值上次修改的依据时间
    CacheDependency mydep6 = new CacheDependency(new string[] { "data.xml", "data1.xml" },new string[] { "Category", "Category1" }, DateTime.Now);

//文件、另一个缓存依赖和键值上次修改的依据时间
    CacheDependency mydep6 = new CacheDependency(new string[] { "data.xml", "data1.xml" },new string[] { "Category", "Category1" }, mydep,DateTime.Now);

实例:

  1. public partial class CacheDependencyPage : System.Web.UI.Page
  2. {
  3. protected void Page_Load(object sender, EventArgs e)
  4. {
  5. if (!IsPostBack)
  6. {
  7. GetData();
  8. }
  9. }
  10. private void GetData()
  11. {
  12. DataTable tableData = new DataTable();
  13. if (Cache["data"] == null)//用于引用该项的缓存键。如果缓存改变,则true;详情百度c#的Cache对象!
  14. {
  15. DataSet ds = new DataSet();
  16. string filePath = Server.MapPath("~/App_Data/XMLFile.xml");//服务器数据绝对地址
  17. ds.ReadXml(filePath);//读取文件内的数据,保存在ds里
  18. tableData = ds.Tables[0];
  19. CacheDependency cdy = new CacheDependency(filePath,DateTime.Now);
  20. Cache.Insert("data", tableData, cdy);//通过使用 Insert(重载Insert方法)方法将项添加到缓存中
  21. //if (cdy.HasChanged)
  22. //{
  23. System.Diagnostics.Debug.WriteLine("Xml已变更");
  24. //}
  25. }
  26. else
  27. {
  28. tableData = (DataTable)Cache["data"];//通过指定其键和值将项添加到缓存中
  29. }
  30. grvCS.DataSource = tableData;
  31. grvCS.DataBind();
  32. //DataSet mds = new DataSet();//验证数据绑定用,因为xml层次结构的问题导致了数据绑定失败;
  33. //mds.ReadXml(Server.MapPath("~/App_Data/XMLFile.xml"));
  34. //grvCS.DataSource = mds;
  35. //grvCS.DataBind();
  36. }
  37. }

其中

1.记得在view页面为gridview绑定相应的数据字段。

2.注意xml的格式,作者本人在实验的时候就应Xml数据格式的问题导致读取的数据绑定失败。

缓存依赖中cachedependency对象的更多相关文章

  1. C#缓存-依赖 CacheHelper

    缓存依赖文件或文件夹 //创建缓存依赖项 CacheDependency dep = new CacheDependency(fileName);//Server.MapPath("&quo ...

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

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

  3. C#中缓存的简单方法及使用Sql设置缓存依赖项

    概述 使用Cache高速缓存可以提高数据的读取速度,减少服务器与客户端之间的数据交互.因为Cache一经创建就会占用服务器上的资源,所以Cache并不是越多越好,一般用于数据较固定,使用较频繁的地方. ...

  4. 在SQL Server中查看对象依赖关系

    原文 在SQL Server中查看对象依赖关系 Viewing object dependencies in SQL Server   Deleting or changing objects may ...

  5. .Net中的缓存依赖配置

    缓存--能非常好的提高网站的性能. 在訪问量大,但更新较少的站点中使用缓存,能够大大提高执行效率. 在.net中给我们提供了非常好的缓存机制.页面缓存.数据缓存,还有非常好的依赖缓存. 依赖缓存优点就 ...

  6. cache应用(asp.net 2.0 SQL数据缓存依赖 [SqlCacheDependency ] )

    Asp.net 2.0 提供了一个新的数据缓存功能,就是利用sql server2005 的异步通知功能来实现缓存 1.首先在sqlserver2005 中创建一个test的数据库. 在SQL Ser ...

  7. SQL数据缓存依赖 [SqlServer | Cache | SqlCacheDependency ]

    前言 本文主要是对<ASP.NET 2.0开发指南>——<数据缓存>章节内容的提取并略有补充. 参考资料 1.     <ASP.NET 2.0开发指南> 2.   ...

  8. ASP.NET缓存全解析6:数据库缓存依赖 转自网络原文作者李天平

    更多的时候,我们的服务器性能损耗还是在查询数据库的时候,所以对数据库的缓存还是显得特别重要,上面几种方式都可以实现部分数据缓存功能.但问题是我们的数据有时候是在变化的,这样用户可能在缓存期间查询的数据 ...

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

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

随机推荐

  1. Google Maps API V3 之 图层

    Google官方教程: Google 地图 API V3 使用入门 Google 地图 API V3 针对移动设备进行开发 Google 地图 API V3 之事件 Google 地图 API V3 ...

  2. java8--类加载机制与反射(java疯狂讲义3复习笔记)

    本章重点介绍java.lang.reflect包下的接口和类 当程序使用某个类时,如果该类还没有被加载到内存中,那么系统会通过加载,连接,初始化三个步骤来对该类进行初始化. 类的加载时指将类的clas ...

  3. MathType 6.9 介绍安装

    1.介绍 MathType是强大的数学公式编辑器,与常见的文字处理软件和演示程序配合使用,能够在各种文档中加入复杂的数学公式和符号,可用在编辑数学试卷.书籍.报刊.论文.幻灯演示等方面,是编辑数学资料 ...

  4. tyvj1463 智商问题

    背景 各种数据结构帝~各种小姊妹帝~各种一遍AC帝~ 来吧! 描述 某个同学又有很多小姊妹了他喜欢聪明的小姊妹 所以经常用神奇的函数来估算小姊妹的智商他得出了自己所有小姊妹的智商小姊妹的智商都是非负整 ...

  5. codevs3250 操作序列

    题目描述 Description Petya是一个非常好玩孩子.他很无聊,因此他开始玩下面的游戏: 他得到一个长度为N的整数序列,他会对这些数字进行操作,他可以把某个数的数值加1或者减1(当然他可以对 ...

  6. multipart/form-data和application/x-www-form-urlencoded的区别

    在Form元素的语法中,EncType表明提交数据的格式 用 Enctype 属性指定将数据回发到服务器时浏览器使用的编码类型. 下边是说明:  application/x-www-form-urle ...

  7. PHP的ob_start()函数用法

    经典参考片段: <?php ob_start(); echo '123'; echo '456'; echo '789'; $content = ob_get_contents(); ob_en ...

  8. 如何挂载阿里云Linux服务器的“数据盘”(新购买)

    详细操作参考: http://jingyan.baidu.com/article/90808022d2e9a3fd91c80fe9.html 用到的命令行汇总: 1.查看磁盘: fdisk -l 2. ...

  9. JavaScript学习总结(二)数组和对象部分

    pt学习总结(二)数组和对象部分 2016-09-16    分类:WEB开发.编程开发.首页精华暂无人评论     来源:trigkit4 分享到:更多1 对象部分 Object类型 Object  ...

  10. JVM参数OmitStackTraceInFastThrow:不打印NullPointerException异常堆栈

    查看线上日志,遇到一个诡异的问题,就是系统大量空指针的异常,但是没有打印堆栈,导致不方便定位问题. 经过一番代码调试,确定并非程序代码问题.没有线索之后,从Google找到了答案:是因为在server ...