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