ASP.NET提供了在一個ASP.NET應用程式基底本上緩衝資訊的編程功能。該功能和Application對象相似,但它具有在ASP.NET應用程式的生命週期內動態維護緩衝資訊的能力。在應用程式中快取資料可以極大地提高效能,因為資料對於伺服器是本地的,能夠被快速檢索。而不必重新查詢最初的資料來源。特別現在的系統一般最大的瓶頸是在資料庫,合理利用緩衝可以減少很多沒有必要的資料庫訪問,從而最佳化系統的效能。
Cache對象提高了實現基於相關性的到期和回調通知的能力,回調通知允許在管理應用程式的其他使用者或ASP.NET本身對緩衝中快取項目的操作。使用Cache對象能夠儲存任何類型(實值型別或應用類型),然後再更新或刪除它們。Cache是比Application對象更靈活的一個對象。它支援:
1、基於相關性的到期和刪除——Cache對象提供了把緩衝值的自動到期和刪除綁定到一個檔案事件、一個具體的或者相對的日期/時間或另一緩衝鍵的能力。
2、自動的鎖定管理——Cache對象包括內部鎖定管理,為原子更新(可以放在一個計算操作中的更新)提供同步。
3、回調機制——Cache對象提供了設定回呼函數在刪除快取項目被調用的能力。
Cache的添加方法有Add()或Insert(),Insert方法可以使用選擇性參數,既使用預設參數來實現緩衝的添加:
Cache.Add(KeyName, KeyValue,Dependencies,AbsoluteExpiration,SlidingExpiration,Priority,CacheItemRemoveCallback);
參數分別為:緩衝名,緩衝的對象,依賴項,絕對到期時間,相對到期時間,優先順序,緩衝到期引發的事件。
緩衝依賴項:檔案依賴,其他緩衝依賴,資料庫依賴和到期時間方法來設定,當依賴項發生改變時,緩衝會失效,並可以引發一定事件。
1、檔案依賴:緩衝依賴xml檔案:
顯示行號 複製代碼 ?
DataSet dsProducts = new DataSet();//...dsProducts數y據YCacheDependency fileDepends = new CacheDependency(Server.MapPath("Northwind.xml"));Cache.Insert("dsProducts", dsProducts, fileDepends);
2、其他快取項目依賴:
顯示行號 複製代碼 ?
object cacheData;string[] fileDependsArray = { Server.MapPath("Northwind.xml") };string[] cacheDependsArray = { "Depend0", "Depend1", "Depend2" };CacheDependency cacheDepends = new CacheDependency(fileDependsArray, cacheDependsArray);Cache.Insert("cacheName", cacheData, cacheDepends);
3、到期時間設定:
AbsoluteExpiration可以設定緩衝的絕對到期的時間,如設定30分鐘後到期:
顯示行號 複製代碼 ?
Cache.Insert("cacheName ", "cacheValue", null, DateTime.Now.AddMinutes(30), Cache.NoSlidingExpiration);
NoSlidingExpiration可以設定相對的到期時間,如果緩衝在NoSlidingExpiration設定的時間內沒有被訪問,緩衝到期一定時間內沒有被訪問,緩衝到期,如果在一定時間內都有訪問,緩衝將不會到期。如在30分鐘有訪問Cache就不到期:
顯示行號 複製代碼 ?
Cache.Insert("cacheName", "cacheValue", null, Cache.NoAbsoluteExpiration, TimeSpan.FromSeconds(30));