缓存依赖中cachedependency对象

缓存依赖主要提供以下功能:
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);

实例:

[html] view plain copy

print?

  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数据格式的问题导致读取的数据绑定失败。

时间: 2024-10-15 03:23:19

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

.Net中的缓存依赖配置

缓存--能很好的提高站点的性能. 在访问量大,但更新较少的网站中使用缓存,可以大大提高运行效率: 在.net中给我们提供了很好的缓存机制,页面缓存.数据缓存,还有很好的依赖缓存. 依赖缓存好处就是,跟相依赖的项的改变有关,比如cacheTable表有数据改变时,数据已经缓存了的就会被清楚,重新读取新的数据,能保持数据的实时更新. 头几天学习了下sql 依赖缓存,实现过程和步骤记录下: 环境:windows 2003+IIS6  ,SQL2008+VS2008 一.首先在sql2008中创建数据库

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

原文 在SQL Server中查看对象依赖关系 Viewing object dependencies in SQL Server Deleting or changing objects may affect other database objects like views or procedures that depends on them and in certain instances, can “break” the depending object. An example can

开启SQLSERVER数据库缓存依赖优化网站性能

很多时候,我们服务器的性能瓶颈会是在查询数据库的时候,所以对数据库的缓存非常重要,那么有没有一种方法,可以实现SQL SERVER数据库的缓存,当数据表没有更新时,就从缓存中读取,当有更新的时候,才从数据表中读取呢,答案是肯定的,这样的话我们对一些常用的基础数据表就可以缓存起来,比如做新闻系统的新闻类别等,每次就不需要从数据库中读取了,加快网站的访问速度. 那么如何开启SQLSERVER数据库缓存依赖,方法如下: 第一步:修改Web.Config的<system.web>节的配置,代码如下,让

MVC缓存依赖:文件依赖

<1>所谓缓存依赖,文件依赖就是指,我不我没有设置缓存的过期时间,当缓存依赖的文件内容发生改变的时候,就通知framework清空缓存.然后重数据库中取数据(或者文件中取数据)然后又把取到是数据缓存起来,用户请求的时候,直接从缓存中取数据,如果缓存依赖的文件内容又发生改变,就又清空,周而复始.. using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.We

System.Web.Caching.Cache类 缓存 各种缓存依赖

System.Web.Caching.Cache类 缓存 各种缓存依赖 Cache类,是一个用于缓存常用信息的类.HttpRuntime.Cache以及HttpContext.Current.Cache都是该类的实例. 一.属性 属性 说明 Count 获取存储在缓存中的项数. EffectivePercentagePhysicalMemoryLimit 获取在 ASP.NET 开始从缓存中移除项之前应用程序可使用的物理内存百分比. EffectivePrivateBytesLimit 获取可用

System.Web.Caching.Cache类 Asp.Net缓存 各种缓存依赖

Cache类,是一个用于缓存常用信息的类.HttpRuntime.Cache以及HttpContext.Current.Cache都是该类的实例. 一.属性 属性 说明 Count 获取存储在缓存中的项数. EffectivePercentagePhysicalMemoryLimit 获取在 ASP.NET 开始从缓存中移除项之前应用程序可使用的物理内存百分比. EffectivePrivateBytesLimit 获取可用于缓存的字节数. Item 获取或设置指定键处的缓存项. 二.方法 方法

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

Asp.net 2.0 提供了一个新的数据缓存功能,就是利用sql server2005 的异步通知功能来实现缓存 1.首先在sqlserver2005 中创建一个test的数据库. 在SQL Server 2005上执行 ALTER DATABASE <DatabaseName> SET ENABLE_BROKER;语句让相应的数据库启用监听服务,以便支持SqlDependency特性. 添加一个 employee的数据库表. 1CREATETABLE[dbo].[employee](2[i

System.Web.Caching.Cache类 缓存 各种缓存依赖(转)

转自:http://www.cnblogs.com/kissdodog/archive/2013/05/07/3064895.html Cache类,是一个用于缓存常用信息的类.HttpRuntime.Cache以及HttpContext.Current.Cache都是该类的实例.尽量使用前者. 一.属性 属性 说明 Count 获取存储在缓存中的项数. EffectivePercentagePhysicalMemoryLimit 获取在 ASP.NET 开始从缓存中移除项之前应用程序可使用的物

.Net 缓存依赖详解

缓存命名空间的讲解流程 16.1  System.Web.Caching简介 本节从缓存命名空间的总体简介和组成结构入手,从整体上对System.Web.Caching进行概述. 16.1.1  System.Web.Caching概述 System.Web.Caching 是用来管理缓存的命名空间.缓存就是将服务器端的数据暂时保存在客户端,方便用户的读取.缓存命名空间的父级空间是“System.Web”,由此可以看 出,缓存通常用于Web网站的开发,包括在B/S项目中的开发.缓存的设计主要是考