应用程序缓存是用来存储与应用程序相关的对象,主要是由Cache类来实现的。
命名控件: using System.Web.Caching;
添加缓存
1、指定键和值
Cache["key"] = "value"; 这种方法添加缓存最方便,可是若是须要设置缓存的有效期、依赖项等特性,它就变得无能为力了
2、使用Add()方法——只用于在ASP.NET缓存中添加新的缓存项(若是用它覆盖现有的缓存项,则会失败)。
Cache.Add("key","value",CacheDependency,DateTime,TimeSpan,CacheItemPriority,CacheItemRemovedCallbac);
这种方法适用于须要设置缓存的有效期、依赖项等特性的缓存,可是要注意它的7个参数必须写完整才能生效,因此灵活性不够好。
参数说明:
第一个参数:key——表示引用缓存对象的键(键)
第二个参数:value——表示要缓存的对象(值)
第三个参数:CacheDependency——表示添加依赖项(容许指定一个文件或缓存键。若是文件发生变化,对象就被删除。若是缓存键发生变化,对象也被删除)
第四个参数:DateTime——表示绝对过时时间(指明缓存数据过时的时间)
第五个参数:TimeSpan——表示可调过时时间又叫弹性的过时时间。指明缓存数据在上一次访问后能够在缓存中保留多长时间(也就是说在相对过时时间内,以相对过时时间剩余时间点为起点再进行相对过时时间。TimeSpan.Zero表示没有指定可调过时时间)()
第六个参数:CacheItemPriority——表示优先级,当在缓存被填满的时候删除那些优先级低的数据
第七个参数:CacheItemRemovedCallbac——表示回调自定义的方法(示例:能够在缓存项从缓存中删除时要求通知),它的类型是CacheItemRemovedCallback类型的
示例一:(指定一个5分钟绝对过时时间)
Cache.Add("key","value",null,DateTime.Now.AddMinutes(5),TimeSpan.Zero,CacheItemPriority.Normal,null); //建立一个指定5分钟绝对过时时间的缓存
示例二:(指定一个5分钟的弹性过时时间,没有指定绝对过时时间)
Cache.Add("key","value",null,DateTime.MaxValue,TimeSpan.FromMinutes(5),CacheItemPriority.Normal,null); //建立一个指定5分钟弹性过时时间的缓存
示例三:(过时时间也取决于一个文件的修改)
//过时时间取决于test.xml文件修改。也就是说当test.xml文件内容修改时此缓存就会过时
CacheDependency dependency = new CacheDependency("C:\\test.xml");
//建立一个依赖文件修改而过时的缓存
Cache.Add("key","value",dependency,DateTime.MaxValue,TimeSpan.FromMinutes(5),CacheItemPriority.Normal,null);
示例四:(过时时间取决于缓存中另外一项的修改)
Cache.Add("key1","value",null,DateTime.MaxValue,TimeSpan.Zero,CacheItemPriority.Normal,null); //当缓存key1的值修改时,缓存key2就会过时
//添加爱到数组中
String[] dependencyKeys = new String[1];
dependencyKeys[0] = "key1";
CacheDependency dependency = new CacheDependency(null, dependencyKeys);
//建立一个依赖另外一个缓存修改而过时的缓存
Cache.Add("key2","value",dependency,DateTime.MaxValue,TimeSpan.Zero,CacheItemPriority.Normal,null);
示例五:(缓存过时后回调方法)
public void ItemRemovedCallback(String key, Object value, CacheItemRemovedReason reason){} //缓存过时将要调用的方法
//建立一个当指定5分钟的弹性过时时间后调用ItemRemovedCallback方法的缓存
Cache.Add("key","value",null,DateTime.MaxValue,TimeSpan.FromMinutes(5),CacheItemPriority.Normal,new CacheItemRemovedCallback(this.ItemRemovedCallback));数组
优先级值顺序缓存 |
含义this |
Highspa |
设为此优先级的缓存项是最不可能在内存不足时被删除的orm |
AboveNormalxml |
设为此优先级的缓存项比优先级为Normal或如下的缓存项更优先保留对象 |
Normal内存 |
设为此优先级的缓存项比优先级为BelowNormal和Low的缓存项更优先保留ci |
BelowNormalit |
这是倒数第二级的优先级;设为此优先级的缓存项只比优先级设为Low的缓存项更优先保留 |
Low |
设为此优先级的缓存项是最有可能在内存不足时被删除的 |
Default |
缓存项的优先级的默认值是Normal |
NotRemovable |
当缓存项设为此优先级时,是在告诉ASP.NET即便是内存不足,也不要从缓存中删除它 |
3、使用Insert()方法——用于覆盖ASP.NET缓存中现有的缓存项。 这种方法能够实现多种方式的方法重载,使用起来比较灵活(但主要用法和Cache.Add用法差不错)
Cache.Insert("key","value");
示例一:(键值添加)
Cache.Insert("key1","value1");
示例二:(添加依赖项的缓存)
Cache.Insert("key","value",System.Web.Caching.CacheDependecy(null,dependencies));
示例三:(添加有效过时时间的)
Cache.Insert("key","value",DateTime.Now.AddMinutes(1d),System.Web.Caching.Cache.NoSlidingExpiration);
示例四:(添加优先级的缓存)
Cache.Insert("key","value",null,System.Web.Caching.Cache.NoSlidingExpiration,System.Web.Caching.Cache.NoSlidingExpiration,System.Web.Caching.CacheItemPriority.High,null);
4、检索缓存
if (Cache["key"] != null)
{ //处理语句 }
5、移除缓存
(1)自动移除
出现缓存已满、或过时、依赖项更改等状况时,缓存项就会自动移除
(2)显示移除 Cache.Remove("key");