應用程序緩存是用來存儲與應用程序相關的對象,主要是由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");