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));
新聞熱點
疑難解答