1. 程式人生 > 實用技巧 >C#中的快取技術(頁面資料快取)

C#中的快取技術(頁面資料快取)

頁面資料快取
頁面資料快取即應用程式快取,他提供一種程式設計方式,可通過鍵將任意資料儲存在內容中。使用應用程式緩存於應用程式狀態類似,但是於應用程式狀態不同的是,應用程式資料快取中的資料容易丟失,即資料並不是在整個應用程式生命週期中都儲存在內容中。應用程式資料快取的優點是由ASP.NET管理快取,它會在項過期、無效或記憶體不足時移除快取中的項,還可以配置應用程式快取,以便在移除項時通知應用程式。


ASP.NET中提供了類似於Session的快取機制,即頁面資料快取。利用資料快取,可以在記憶體中儲存各種於應用程式相關的物件。對於各個應用程式來說,資料快取只是在應用程式內共享,並不能在應用程式間進行共享。Cache類用於實現WEB應用程式的快取,在Cache中儲存資料的最簡單的方法如下:

Cache["key"] = Value;

從快取中取資料時,需要判斷一下快取是否有內容。如下:
Value = (string)Cache["key"];
if (Value != null)
{
//do something;
}

注意:從Cache中得到的物件是一個object型別的物件,因此在通常情況下,需要進行強制轉換。
Cache類有兩個很重要的方法,即Add和Insert方法,其語法格式如下:

 1  public Object Add[Insert](
 2           
 3             string
key, 4 Object value, 5 CacheDependency dependencies, 6 DateTime absoluteExpiration, 7 TimeSpan slidingExpiration, 8 CacheItemPriority priority, 9 CacheItemRemovedCallback onRemoveCallback 10 )

引數說明:
key:用於引用該項的快取鍵。


value:要新增快取的項。
dependencies:該項的檔案依賴項或快取鍵依賴項或快取依賴項,當任何依賴項更改時,該物件即無效,並從哪快取中移除,如果沒有依賴項,則此引數可以設為null。
absoluteExpiration:過期的絕對時間。
slidingExpiration:最後一次訪問所新增物件時與該物件過期時之間的時間間隔。
priority:快取的優先順序,由CacheItemPriority列舉表示。快取的優先順序共有6種,從小到達依次為NotRemoveable、High、AboveNomal、Normal、BelowNormakl和Low。
onRemoveCallback:在從快取中移除物件時所呼叫的委託(如果沒有,可以為null)。當從快取中刪除應用程式的物件時,它將會被呼叫。

Insert方法於Add方法類似,但Insert方法可以過載方法,其結構如下:

Inser過載方法列表
過載方法 說明
Cache.Insert(String,Object) 向Cache物件插入項,該項帶有一i個快取鍵引用其位置,並使用CacheItemPriority列舉提供的預設值
Cache.Insert(String,Object,CacheDependency) 向Cache中插入具有檔案依賴項或建依賴項的物件
Cache.Insert(String,Object,CacheDependency,DateTime,TimeSpan) 向Cache中插入具有依賴項和過期策略的物件
Cache.Insert(String,Object,CacheDependency,DateTime,TimeSpan,CacheItemPriority,CacheItemRemovedCallback) 向Cache中插入物件,後者具有依賴項、過期和優先順序策略以繼一個委託(可用於在從Cacle移除插入項時通知應用程式)