正在阅读:ASP.NET缓存:方法分析和实践示例ASP.NET缓存:方法分析和实践示例

2005-07-26 09:56 出处: 作者:ms 责任编辑:moningfeng

  在 Cache 中存储数据  

  在 Cache 中存储数据的最简单的方法就是使用一个键为其赋值,就像 HashTable 或 Dictionary 对象一样:  

  Cache["key"] = "value"; 

 
  这种做法将在缓存中存储项,同时不带任何依赖项,因此它不会到期,除非缓存引擎为了给其他缓存数据提供空间而将其删除。要包括特定的缓存依赖项,可使用 Add() 或 Insert() 方法。其中每个方法都有几个重载。Add() 和 Insert() 之间的唯一区别是,Add() 返回对已缓存对象的引用,而 Insert() 没有返回值(在 C# 中为空,在 VB 中为 Sub)。  

  示例 

  Cache.Insert("key", myXMLFileData, new

  System.Web.Caching.CacheDependency(Server.MapPath("users.xml")));

  
  该示例可将文件中的 xml 数据插入缓存,无需在以后请求时从文件读取。 CacheDependency 的作用是确保缓存在文件更改后立即到期,以便可以从文件中提取最新数据,重新进行缓存。如果缓存的数据来自若干个文件,还可以指定一个文件名的数组。  

  Cache.Insert("dependentkey", myDependentData, newSystem.Web.Caching.CacheDependency(new string[] {}, new string[] {"key"})); 

 
  该示例可插入键值为 "key" 的第二个数据块(取决于是否存在第一个数据块)。如果缓存中不存在名为 "key" 的键,或者如果与该键相关联的项已到期或被更新,则 "dependentkey" 的缓存条目将到期。  

Cache.Insert("key", myTimeSensitiveData, null, DateTime.Now.AddMinutes(1), TimeSpan.Zero);

  
  绝对到期:此示例将对受时间影响的数据缓存一分钟,一分钟过后,缓存将到期。注意,绝对到期和滑动到期(见下文)不能一起使用。  

Cache.Insert("key", myFrequentlyAccessedData, null,System.Web.Caching.Cache.NoAbsoluteExpiration, TimeSpan.FromMinutes(1)); 

 
  滑动到期:此示例将缓存一些频繁使用的数据。数据将在缓存中一直保留下去,除非数据未被引用的时间达到了一分钟。注意,滑动到期和绝对到期不能一起使用。 

  更多选项  

  除了上面提到的依赖项,我们还可以指定项的优先级(依次为 low、high、NotRemovable,它们是在 System.Web.Caching.CacheItemPriority 枚举中定义的)以及当缓存中的项到期时调用的 CacheItemRemovedCallback 函数。大多数时候,默认的优先级已经足够了 — 缓存引擎可以正常完成任务并处理缓存的内存管理。CacheItemRemovedCallback 选项考虑到一些很有趣的可能性,但实际上它很少使用。不过,为了说明该方法,我将提供它的一个使用示例:  

  CacheItemRemovedCallback 示例

  System.Web.Caching.CacheItemRemovedCallback callback = new System.Web.Caching.CacheItemRemovedCallback (OnRemove);

  Cache.Insert("key",myFile,null, System.Web.Caching.Cache.NoAbsoluteExpiration, TimeSpan.Zero, System.Web.Caching.CacheItemPriority.Default, callback);
  . . .
  public static void OnRemove(string key, object cacheItem, System.Web.Caching.CacheItemRemovedReason reason)

  {

  AppendLog("The cached value with key '" + key + "' was removed from the cache. Reason: " +
reason.ToString());

  } 

键盘也能翻页,试试“← →”键

关注我们

最新资讯离线随时看 聊天吐槽赢奖品