1.3 ASP.NET cache
cache是我最喜欢用的机制,这也是为什么我喜欢说它的原因。它提供了键-值对应的方法,cache对应的命名空间是:System.Web.Caching 它的生命周期也依赖于应用程序,但它并不像session,这也是面向所有用户的。虽然cache看起来特别像application,但它最大的不同是提供了数据缓存失效控制方法以及数据缓存依赖管理。也就是说,在cache中我们可以非常容易的按照事先设定好的过期时间来让cache过期,删除 cache,我们也可以根据缓存依赖关系来操作cache,当依赖的关系有改动时,此时cache也会自动失效。而这都是applicaion没法办到的。
现在让我们看下asp.net中是如何支持cache的过期以及数据缓存依赖的。
1)缓存依赖:
顾名思义它是指当事先设定的依赖关系发生变化时,cache 将会失效。在asp.net中提供了两种依赖关系:
A. 文件缓存依赖:当磁盘上的一个文件发生变化时自动让cache失效
下面是实例代码:
object errorData; //Load errorData from errors.xml CacheDependency fileDependency = new CacheDependency(Server.MapPath("errors.xml")); Cache.Insert("ERROR_INFO", errorData, fileDependency); |
B. 键值缓存依赖:看起来和文件缓存非常像,不同之外就是这种依赖方式不同而已,当有多个cache信息之间互相关联时,一个 cache信息的变化将会引起其它cache的失效。例如一个用户信息包含:编号,姓名,地址等,如果用户编号发生变化则cache失效,这种情况下,用户的基本信息就依赖于用户编号。
下面是示例代码:
string[] relatedKeys = new string[1]; |
2)过期策略:从创建cache开始,一段时间后自动过期。
示例代码:
//Absolute Expiration |