asp.net提供了在一個ASP.NET應(yīng)用程序基本上緩存信息的編程功能。該功能和application對象相似,但它具有在ASP.NET應(yīng)用程序的生命周期內(nèi)動態(tài)維護(hù)緩存信息的能力。在應(yīng)用程序中緩存數(shù)據(jù)可以極大地提高性能,因為數(shù)據(jù)對于服務(wù)器是本地的,能夠被快速檢索。而不必重新查詢最初的數(shù)據(jù)源。特別現(xiàn)在的系統(tǒng)一般最大的瓶頸是在數(shù)據(jù)庫,合理利用緩存可以減少很多沒有必要的數(shù)據(jù)庫訪問,從而優(yōu)化系統(tǒng)的性能。
Cache對象提高了實現(xiàn)基于相關(guān)性的到期和回調(diào)通知的能力,回調(diào)通知允許在管理應(yīng)用程序的其他用戶或ASP.NET本身對緩存中緩存項的操作。使用Cache對象能夠存儲任何類型(值類型或應(yīng)用類型),然后再更新或刪除它們。Cache是比Application對象更靈活的一個對象。它支持:
1、基于相關(guān)性的過期和刪除——Cache對象提供了把緩存值的自動過期和刪除綁定到一個文件事件、一個具體的或者相對的日期/時間或另一緩存鍵的能力。
2、自動的鎖定管理——Cache對象包括內(nèi)部鎖定管理,為原子更新(可以放在一個計算操作中的更新)提供同步。
3、回調(diào)機(jī)制——Cache對象提供了設(shè)置回調(diào)函數(shù)在刪除緩存項被調(diào)用的能力。
Cache的添加方法有Add()或Insert(),Insert方法可以使用可選參數(shù),既使用默認(rèn)參數(shù)來實現(xiàn)緩存的添加:
Cache.Add(KeyName, KeyValue,Dependencies,AbsoluteExpiration,SlidingExpiration,PRiority,CacheItemRemoveCallback);
參數(shù)分別為:緩存名,緩存的對象,依賴項,絕對過期時間,相對過期時間,優(yōu)先級,緩存過期引發(fā)的事件。
緩存依賴項:文件依賴,其他緩存依賴,數(shù)據(jù)庫依賴和過期時間方法來設(shè)置,當(dāng)依賴項發(fā)生改變時,緩存會失效,并可以引發(fā)一定事件。
1、文件依賴:緩存依賴xml文件:
顯示行號 復(fù)制代碼 ?DataSet dsProducts = new DataSet();//...dsProducts數(shù)y據(jù)YCacheDependency fileDepends = new CacheDependency(Server.MapPath("Northwind.xml"));Cache.Insert("dsProducts", dsProducts, fileDepends);2、其他緩存項依賴:顯示行號 復(fù)制代碼 ?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、過期時間設(shè)置:
AbsoluteExpiration可以設(shè)置緩存的絕對過期的時間,如設(shè)置30分鐘后過期:
顯示行號 復(fù)制代碼 ?Cache.Insert("cacheName ", "cacheValue", null, DateTime.Now.AddMinutes(30), Cache.NoSlidingExpiration);NoSlidingExpiration可以設(shè)置相對的過期時間,如果緩存在NoSlidingExpiration設(shè)定的時間內(nèi)沒有被訪問,緩存過期一定時間內(nèi)沒有被訪問,緩存過期,如果在一定時間內(nèi)都有訪問,緩存將不會過期。如在30分鐘有訪問Cache就不過期:
顯示行號 復(fù)制代碼 ?Cache.Insert("cacheName", "cacheValue", null, Cache.NoAbsoluteExpiration, TimeSpan.FromSeconds(30));
新聞熱點
疑難解答