.net System.Web.Caching.Cache缓存类使用详解

转载 2012年03月29日 13:42:57

转自http://www.cnblogs.com/zgx/archive/2009/03/16/1413643.html

 

System.Web.Caching 命名空间提供用于缓存服务器上常用数据的类。这包括 Cache 类,该类是一个使您可以存储任意数据对象(如哈希表和数据集)的词典。它还为这些对象提供到期功能,并提供使您可以添加和移除对象的方法。您还可以添加依赖于其他文件或缓存项的对象,并在从Cache 中移除对象时执行回调以通知应用程序。

        System.Web.Caching.Cache 用于实现 Web 应用程序的缓存。

        对于每个应用程序域均创建该一个实例,并且只要对应的应用程序域保持活动,该实例便保持有效。有关此类实例的信息通过HttpContext 对象的 Cache 属性或 Page 对象的 Cache 属性来提供。

       方法:

  1. Add

                  将指定项添加到 Cache 对象,该对象具有依赖项、过期和优先级策略以及一个委托(可用于在从 Cache 移除插入项时通知应用程序)。如果 Cache 中已保存了具有相同key 参数的项,则对此方法的调用将失败。若要使用相同的 key 参数改写现有的 Cache 项,请使用 Insert 方法.

  2. Insert

                            向 Cache 对象插入项。使用此方法的某一版本改写具有相同 key 参数的现有 Cache 项。

  3. Remove

                            从应用程序的 Cache 对象移除指定项。

  4. Item / Get

                         提供通过Name找到Value的方法

-----------------------------------------------------------------------------------------------------------------------------------------------

一下是从微软网上MSDN找到的一篇有关Cache的说明, 内容差不多,但是要更加具体一些:

您可以使用三种不同的技术将项添加到 Cache 对象中。根据应用程序要求的不同,您的选择可以从简单到复杂。

如果要利用 Cache 所提供的清理、到期时间和依赖项支持,则必须使用 Cache.Insert 方法或 Cache.Add 方法。

注意   AddInsert 方法具有相同的签名,但它们之间存在细微的差别。首先,调用Add 方法返回表示缓存项的对象,而调用 Insert 方法不是。其次,如果您调用这些方法并将已存储在Cache 中的某个项添加到 Cache 中,那么它们的行为是不同的。Insert 方法替换该项,而Add 方法失败。

通过指定其键和值将项添加到缓存中

  • 通过指定项的键和值,您可以像将项添加到字典中一样将其添加到缓存中。下面的代码将文本框的当前 Value 属性添加到 Cache 中。
    [Visual Basic]
        Cache("txt1") = txtName.value
        [C#]
        Cache["txt1"] = txtName.value;

通过使用 Insert 方法将项添加到缓存中

  • 重载 Insert 方法,允许您定义正在使用的版本的参数的值。例如,若要只添加项的键和值,则使用下面的代码。
    [Visual Basic]
        Cache.Insert("MyData1", connectionString)
        [C#]
        Cache.Insert("MyData1", connectionString); 

使用 Add 方法将项添加到缓存中

  • Add 方法与 Insert 方法具有相同的签名,但它返回表示您所添加项的对象。
    [Visual Basic]
        Cache.Add("MyData1", connectionString)
        [C#]
        Cache.Add("MyData1", connectionString); 

这两种方法都使您能够在很大程度上控制在 Cache 中保留项的条件。两种方法都支持使缓存的项依赖于外部文件或目录、Cache 中的其他键或任意一个的数组。将设有依赖项的项添加到Cache 中将创建 CacheDependency 类的实例,它跟踪对您定义的依赖项的更改。如果这些依赖项的任何一个发生更改(包括被删除或移动),则将与该依赖项关联的项从Cache 中移除。

将设有依赖项的项添加到缓存中

  • 您可以使用 AddInsert 方法中的 dependencies 参数将设有依赖项的项添加到Cache 中。下面的示例演示使用 Insert 方法将设有依赖项(在 XML 文件上)的项添加到Cache 中。
    [C#]
        Cache.Insert("MyData1", connectionString, new CacheDependency(Server.MapPath(\\myServer\myConfig.xml)));
        [Visual Basic]
        Cache.Insert("MyData1", connectionString, new CacheDependency(Server.MapPath(\\myServer\myConfig.xml)))

将设有到期策略的项添加到缓存中

  • 您可以使用 absoluteExpiration parameter 参数和 slidingExpiration 参数将设有到期策略的项添加到Cache 中。您可以定义绝对过期时间或弹性过期时间,但不能同时定义两者。在使用上述参数之一定义到期策略时,必须将另一个参数设置为零。Cache 类定义了两个自动执行该操作的字段:NoAbsoluteExpirationNoSlidingExpiration。当定义绝对或弹性过期时间时,只要将适当的参数设置为其相应的字段值即可。下面的示例使用 Insert 方法将设有两分钟绝对到期时间的项添加到 Cache 中。
    [C#]
        Cache.Insert("MyData1", connectionString, null, DateTime.Now.AddMinutes(2),  NoSlidingExpiration);
        [Visual Basic]
        Cache.Insert("MyData1", connectionString, null, DateTime.Now.AddMinutes(2),  NoSlidingExpiration)

    下面的代码使用 Insert 方法将设有 30 秒弹性过期时间的项添加到 Cache 中。

    [C#]
        Cache.Insert("MyData1", connectionString, null, NoAbsoluteExpiration, TimeSpan.FromSeconds(30));
        [Visual Basic]
        Cache.Insert("MyData1", connectionString, null, NoAbsoluteExpiration, TimeSpan.FromSeconds(30))
    注意   当设置绝对到期时间时,请使用 DateTime 结构。当设置弹性过期时间时,请使用 TimeSpan 结构。另外,如果您创建的弹性过期时间小于零或大于一年,则将引发 ArgumentOutOfRangeException 类。

您还可以使用 AddInsert 方法通过在 CacheItemPriority 枚举中指定值定义缓存项的相对重要性。当 Web 服务器进行清理以释放内存时,这些相对优先级会对它有所帮助。Web 服务器会在移除具有较高优先级的项之前先从Cache 中移除具有较低优先级的项。

将设有优先级设置的项添加到缓存中

  • 您可以通过在 AddInsert 方法上使用 priority 参数将设有优先级设置的项添加到Cache 中。下面的示例使用 Add 方法将 priorityHigh 的项添加到 Cache 中。
    [C#]
        Cache.Add("MyData1", connectionString, null, NoAbsoluteExpiration, TimeSpan.FromSeconds(30), CacheItemPriority.High, null);
        [Visual Basic]
        Cache.Add("MyData1", connectionString, null, NoAbsoluteExpiration, TimeSpan.FromSeconds(30), CacheItemPriority.High, null)  

这些方法还允许在项从缓存中移除时,使用 CacheItemRemovedCallback 委托通知应用程序。有关完整的示例,请参见从缓存中删除项时通知应用程序。

相关文章推荐

.net System.Web.Caching.Cache 缓存类使用详解

System.Web.Caching 命名空间提供用于缓存服务器上常用数据的类。这包括 Cache 类,该类是一个使您可以存储任意数据对象(如哈希表和数据集)的词典。它还为这些对象提供到期功能,并提供...

System.Web.Caching.Cache类 缓存

Cache类,是一个用于缓存常用信息的类。HttpRuntime.Cache以及HttpContext.Current.Cache都是该类的实例。 一、属性 属性 说明 Count 获取存...

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

cache类是一个用于缓存常用信息得类。 文件缓存依赖:当被依赖的文件被更改时,缓存会被立即清空。 public partial class _Default : System.Web.UI.Pa...

System.Web.Caching.Cache

System.Web.Caching 命名空间提供用于缓存服务器上常用数据的类。这包括 Cache 类,该类是一个使您可以存储任意数据对象(如哈希表和数据集)的词典。它还为这些对象提供到期功能,并提供...

深入System.Web.Caching命名空间 教你Hold住缓存管理(三)

本文分三篇,从缓存所在命名空间System.Web.Caching开始,详细的介绍.NET框架提供的缓存类和操作方法。看完之后你将学会: 第一篇-如何实现简单的数据缓存第二篇-缓存从文件中读取的...
  • lwj0310
  • lwj0310
  • 2014年06月21日 15:17
  • 540

Simple way to implement caching in ASP.NET Web API

另附:WebCache Class https://msdn.microsoft.com/en-us/library/system.web.helpers.webcache(v=vs.111).asp...
  • Joyhen
  • Joyhen
  • 2016年04月01日 15:53
  • 709

ASP.NET Web API Caching with CacheCow and CacheOutput

原文:http://www.hanselman.com/blog/NuGetPackageOfTheWeekASPNETWebAPICachingWithCacheCowAndCacheOutput....
  • Joyhen
  • Joyhen
  • 2014年08月01日 01:00
  • 2860

ASP.NET缓存技术学习入门---页面缓存(OutPut Caching)

以前写程序从来都没用过缓存(水平太菜),好在以前做的网站访问量都非常的小,所以性能问题也不突出,但是如果做一个正规的项目,不论大小,缓存技术是必须要使用到的。今天学习了三种常用的缓存技术,下面先讲第一...

使用.Net下的全局程序集共享缓存(Globe Assembly Cache GAC)详细攻略

使用GAC详细攻略作者:GhostBear在网上搜索了一大堆资料,但都没用。经过自己反复的测试,终于成功了。具体步骤如下: 部署程序集文件到GAC:1.      建一个类库文件,并给它签名。2.  ...

ASP.NET缓存技术学习入门---页面缓存(OutPut Caching)

以前写程序从来都没用过缓存(水平太菜),好在以前做的网站访问量都非常的小,所以性能问题也不突出,但是如果做一个正规的项目,不论大小,缓存技术是必须要使用到的。今天学习了三种常用的缓存技术,下面先讲第一...
  • lz00728
  • lz00728
  • 2012年04月21日 16:02
  • 848
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:.net System.Web.Caching.Cache缓存类使用详解
举报原因:
原因补充:

(最多只允许输入30个字)