我用ASP.NET缓存之数据缓存

【我的理解】

 

Cache,是内置的对象集合。是全局的,类似于static Arraylist.它是线程安全的,添加或修改Cache中的项目时,不需要锁定或者解除Cache。

添加 Cache[Key]=object  or Cache.Insert

移除 Cache.Remove(key)

【我是怎么用的】

首先理解缓存策略。可调过期策略 和 绝对过期策略。注意,两则不能同时使用

 

使用可调过期策略,需要将absoluteExpiration=DateTime.MaxValue ,TimeSpan .FromMinutes(10)设置项目只有在10分钟内不被使用才会被移除
Cache.Insert("data", "123", null , DateTime.MaxValue, TimeSpan.FromMinutes(10));

绝对策略,如天气报告,将信息保存60分钟
Cache.Insert("data", "123", null , DateTime.Now.AddMinutes(60), TimeSpan.Zero);

 

缓存依赖。

即一个缓存的失效依赖另外一个object。这里的object可以指另外一个缓存,或者一个文件,或者....

类:CacheDependency 命名空间 System.Web.Caching.CacheDependency

依赖于其它缓存项目
 
System.Web.Caching. CacheDependency  cacheDependency =  new  System.Web.Caching. CacheDependency  ( null ,  new  string  [] {  "time"  });
Cache.Insert(  "number" , ++num, cacheDependency);
 
依赖于文件或文件夹
 
System.Web.Caching.  CacheDependency  cacheDependency =  new  System.Web.Caching. CacheDependency  (  "test.xml" );
当test.xml文件删除、更新时自动从缓存中移除
 

System.Web.Caching.CacheDependency cacheDependency = new System.Web.Caching.CacheDependency(null, new string[] { "time" });
Cache.Insert("test", "123", cacheDependency);

 
移除项目回调
 Cache.Insert( "test" ,  "123" ,  null  ,  DateTime .Now.AddSeconds(10),  TimeSpan .Zero,  new  CacheItemUpdateCallback (Test));
 
 
  private  void  Test( string  key,  CacheItemUpdateReason  reason,  out  object  expensiveObject,  out  CacheDependency  dependency,  out  DateTime  absoluteExpiration,  out  TimeSpan  slidingExpiration)
    {
 
    }
 

【源码下载】

 

 

你可能感兴趣的:(asp.net)