1.在Asp.net中,提供了专门用于缓存数据的Cache对象,它的应用范围是应用程序域。生存期是和应用程序紧密相关的,每当应用程序启动的时候就重新创建Cache对象。它与Application对象的主要区别就是提供了专门用于缓存管理的特性,比如依赖和过期策略。
2.Cache对象定义在System.Web.Caching命名空间,可以使用HttpContext类的Cache属性或Page对象的Cache属性来得到Cache的引用,Cache对象除了存储键值对以外,还可以存储.net框架的对象。
缓存是把数据保存在内存以便下次调用,但是数据更新后,内存中的数据并没有更新,仍然是以前的数据,要怎样使缓存的数据也更新呢?我们采用依赖和过期策略。有三个方法可以实现:
1.文件依赖(File Dependency)
2.键值依赖(Key Dependency)
3.基于时间的过期策略
首先我们来看文件依赖。文件依赖就是当硬盘上的某个(某些)文件更改时,强制移除缓存数据。
例:
CacheDependency dep = new CacheDependency(Server.MapPath("file.xml"));
cache.Insert("key", "value", dep);
注意:文件依赖项是通过使用 Cache.Insert 并提供引用 XML 文件的 CacheDependency 对象添加的。
键值依赖,指定缓存中的某个数据项更改时移除。
比如我们有key1和key2两个缓存,key2是键值依赖于key1的,但key1发生变化,key2就失效。
例:
//创建key1缓存
Cache["key1"]="key1 value";
//是缓存key2键值依赖于key1
string[] Dependencykey=new string[1];
Dependencykey[0]="key1";
CacheDependency dep=new CacheDependency(null,Dependencykey);
cache.Insert("key2", "value2", dep);
基于时间的过期策略,按照预先定义的时间策略来使数据失效,可以是绝对时间(如某个日期的18:00)也可以是相对现在的相对时间。使用太短和太长的过期时间都不行,不是造成用不上的缓存数据,就是缓存了陈旧的数据并加重了缓存负担,所以可以使用高并发的测试来决定过期时间的最佳值。
例:
//绝对时间过期
Cache.Insert("DSN", connectionString, null, DateTime.Now.AddMinutes(2), System.Web.Caching.Cache.NoSlidingExpiration);
//相对时间过期
Cache.Insert("DSN", connectionString, null, System.Web.Caching.Cache.NoAbsoluteExpiration, TimeSpan.FromSeconds(10));
原文章http://industry.ccidnet.com/art/1077/20030225/671291_1.html