ASP_net mvc 自定義的OutputCache

ASP_net mvc 自定義的OutputCache

ID:39464753

大小:226.00 KB

頁數(shù):13頁

時間:2019-07-03

ASP_net mvc 自定義的OutputCache_第1頁
ASP_net mvc 自定義的OutputCache_第2頁
ASP_net mvc 自定義的OutputCache_第3頁
ASP_net mvc 自定義的OutputCache_第4頁
ASP_net mvc 自定義的OutputCache_第5頁
資源描述:

《ASP_net mvc 自定義的OutputCache》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。

1、在ASP.NET中構(gòu)建和使用自定義的OutputCache提供程序BrandonSatrom下載代碼示例如果您是一位Web開發(fā)人員,您過去可能使用過ASP.NET提供的輸出緩存功能。ASP.NET輸出緩存功能是隨著Microsoft.NETFramework的第一個版本推出的,該功能通過從緩存中檢索向站點訪問者提供的內(nèi)容以及避免重新執(zhí)行頁面或控制器,提高了向站點訪問者提供內(nèi)容方面的性能。當返回您不經(jīng)常更新的數(shù)據(jù)或者返回一段時間后將過期的數(shù)據(jù)時,該功能不需要您的應(yīng)用程序執(zhí)行耗費大量資源的數(shù)據(jù)庫調(diào)用

2、操作。ASP.NET輸出緩存使用的是內(nèi)存存儲機制,并且在NETFramework4出現(xiàn)之前,您無法使用您自己的實現(xiàn)覆蓋或替代默認緩存?,F(xiàn)在,借助新的OutputCacheProvider類型,您可以在ASP.NET中實現(xiàn)您自己的緩存頁面輸出機制。在本文中,我將為您介紹兩種自定義機制。首先,我將使用MongoDB(一種常用的面向文檔數(shù)據(jù)庫)在一個簡單的ASP.NETMVC應(yīng)用程序中創(chuàng)建我自己的提供程序,以方便輸出緩存。然后,我會使用同一個應(yīng)用程序快速交換我的自定義提供程序,以便利用WindowsA

3、zureAppFabric的功能—具體地說,就是在云中利用WindowsAzure基礎(chǔ)結(jié)構(gòu)提供分布式內(nèi)存緩存的新DistributedCache提供程序。ASP.NET中的輸出緩存在ASP.NETWeb窗體應(yīng)用程序中,可以通過向任意ASP.NET頁面或用戶控件添加OutputCachePage指令來配置輸出緩存:1.??????????<%@?OutputCache?Duration="60"?Location="Any"?VaryByParam="name"?%>2.????????對于ASP

4、.NETMVC應(yīng)用程序,輸出緩存是使用ASP.NETMVC附帶的操作篩選器來提供的,該操作篩選器可用作任何控制器操作的一個屬性:1.??????????[OutputCache(Duration=60,?VaryByParam="none")]2.????????“Duration”和“VaryByParam”在ASP.NETMVC1和2應(yīng)用程序中是必需的(VaryByParam在ASP.NETMVC3中是可選的),這兩種機制都提供其他一些屬性和參數(shù),這些屬性和參數(shù)使開發(fā)人員能夠控制緩存內(nèi)容的方

5、式(一些VaryByX參數(shù))、緩存內(nèi)容的位置(Location)和用于設(shè)置緩存無效依賴項的功能(SqlDependency)。對于傳統(tǒng)的輸出緩存,在您的應(yīng)用程序中實現(xiàn)該功能時不需要任何其他東西。OutputCache類型是一個在您的應(yīng)用程序啟動時運行,并在遇到頁面指令或操作篩選器時開始發(fā)揮作用的HttpModule。收到第一個相關(guān)的頁面或控制器請求后,ASP.NET將接收生成的內(nèi)容(HTML、CSS、JavaScript文件等)并將各個項目以及過期日期和用于標識相應(yīng)項目的關(guān)鍵字放入內(nèi)存緩存中。過

6、期日期由Duration屬性確定,關(guān)鍵字則由到頁面的路徑和必要的VaryBy值的組合確定—例如,如果提供了VaryByParam屬性,則會查詢字符串或參數(shù)值?,F(xiàn)在,請考慮一下以這種方式定義的控制器操作:1.??????????[OutputCache(Duration=20,?VaryByParam="vendorState")]2.Public?ActionResult?GetVendorList(string?vendorState)3.{4.??//?Action?logic?here.5

7、.??????????}6.????????在這種情況下,對于vendorState的各個實例(例如,一個針對德克薩斯州,一個針對華盛頓州等等),ASP.NET將在請求該州時分別緩存生成的HTML視圖的一個實例。在這種情況下,存儲各個實例所使用的關(guān)鍵字將是相關(guān)路徑和vendorState的組合。另一方面,如果將VaryByParam屬性設(shè)置為“none”,則ASP.NET將緩存第一次執(zhí)行GetVendorList的結(jié)果,并且會向所有后續(xù)請求傳遞相同的緩存版本,而不考慮vendorState參數(shù)的

8、值是否傳入了相應(yīng)操作。當沒有提供VaryByParam值時存儲此實例所使用的關(guān)鍵字就是路徑。圖1簡單描述了此過程。圖1ASP.NET輸出緩存過程除了用于控制緩存中的項目的生存期的Duration參數(shù)以外,還有一些VaryBy參數(shù)(VaryByParam、VaryByHeader、VaryByCustom、VaryByControl和VaryByContentEncoding)用于控制緩存項目的精度,可以配置輸出緩存,以控制緩存內(nèi)容的位置(客戶端、服務(wù)器或下游代理服務(wù)器)。此外,ASP.NET2.

當前文檔最多預覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當前文檔最多預覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學公式或PPT動畫的文件,查看預覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負責整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時聯(lián)系客服。
3. 下載前請仔細閱讀文檔內(nèi)容,確認文檔內(nèi)容符合您的需求后進行下載,若出現(xiàn)內(nèi)容與標題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡(luò)波動等原因無法下載或下載錯誤,付費完成后未能成功下載的用戶請聯(lián)系客服處理。