溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

ASP.NET如何緩存頁(yè)面

發(fā)布時(shí)間:2021-11-22 14:10:38 來(lái)源:億速云 閱讀:107 作者:小新 欄目:編程語(yǔ)言

這篇文章給大家分享的是有關(guān)ASP.NET如何緩存頁(yè)面的內(nèi)容。小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨小編過來(lái)看看吧。

緩存頁(yè)面

使用OutputCache指令

<%@OutputCacheDuration="3600" Location="Any" VaryByCustom="browser" VaryByParam="RequestID"%>

其中Duration和VaryByParam特性是必須的。

VaryByParam允許我們緩存頁(yè)面的不同版本。在上面的例子中,VaryByParam設(shè)為了RequestID,所以ASP.NET使用RequestID參數(shù)的不同值,這些值或者是在HTTP GET的查詢字符串中傳入,或者是在HTTP POST的參數(shù)中傳入??梢酝ㄟ^檢查RequestID參數(shù)的值讓應(yīng)用程序區(qū)分不同的用戶;通過在頁(yè)面的OutputCache指令中放置VaryByParam="RequestID",可以讓ASP.NET為每個(gè)用戶緩存頁(yè)面的不同版本。
如果不想根據(jù)參數(shù)的值緩存頁(yè)面的不問版本,那么只要把VaryByParam設(shè)為none。
也可以要求ASP.NET為每個(gè)可能的參數(shù)組合緩存頁(yè)面的一個(gè)版本。為此,可把VaryByParam設(shè)為*。

VaryByHeader和VaryByCustom特性與VaryByParam的相似之處在于,它們?cè)试S指定何時(shí)應(yīng)創(chuàng)建頁(yè)面新的緩存版本。
VaryByHeader允許我們根據(jù)由分號(hào)分隔的HTTP頭的列表末緩存頁(yè)面的不向版本。
VaryByCustom當(dāng)設(shè)為browser時(shí),允許我們根據(jù)瀏覽器的名稱和主版本信息緩存不同版本。也可以把它設(shè)為一個(gè)自定義方法的名稱,從而實(shí)現(xiàn)我們自己的邏輯,控制緩存的版本。

片斷緩存

可以利用用戶控件將頁(yè)面分段,在ascx文件中寫入緩存的語(yǔ)句,而不在aspx文件中寫緩存語(yǔ)句,這樣ASP.NET就可以只緩存ascx片斷的輸出了。一般像頁(yè)眉或頁(yè)腳基本上都是一樣的,就不需要重新加載。但是如果其中有動(dòng)態(tài)變化的數(shù)據(jù)就不能對(duì)其進(jìn)行緩存,因?yàn)橐坏┍痪彺婧蟪绦蚓筒粫?huì)再創(chuàng)建它的實(shí)例來(lái)更新數(shù)據(jù)顯示,只有等到生存期過期才行,所以對(duì)于這種情況就不適于用頁(yè)面片斷緩存。
注意:
一、注意片段緩存不支持Location特性;緩存頁(yè)面片段惟一合法的地方是web服務(wù)器。這是因?yàn)槠尉彺嬖贏SP.NET中是新的功能,所以瀏覽器和代理服務(wù)器不支持。
二、片段緩存有另外一個(gè)在頁(yè)面緩存中沒有的特性——VaryByControl。VaryByControl特性允許指定一個(gè)由分號(hào)分隔的字符串列表,代表用戶控件內(nèi)使用的控件的名稱;ASP.NET將針對(duì)值的每個(gè)不同的組合生成用戶構(gòu)件的一個(gè)緩存版本。

數(shù)據(jù)緩存

低級(jí)API是Cache類,它位于ASP.NET中的System.web.Caching命名空間,可以用它緩存生成很耗費(fèi)資源的數(shù)據(jù)。Cache類的使用和Session與Application對(duì)象一樣簡(jiǎn)單。每個(gè)應(yīng)用程序只有一個(gè)Cache對(duì)象——這意味著使用Cache對(duì)象存儲(chǔ)在緩存中的數(shù)據(jù)是應(yīng)用程序級(jí)別的數(shù)據(jù)。使事情更為簡(jiǎn)單的是,Page類的Cache屬性使應(yīng)用程序的Cache對(duì)象實(shí)例能在代碼中使用。
通過Cache對(duì)象緩存的數(shù)據(jù)存儲(chǔ)在應(yīng)用程序的內(nèi)存中。這意味著該數(shù)據(jù)的生存期不會(huì)超過應(yīng)用程序的重啟(事實(shí)上,這和存儲(chǔ)在Application與Session對(duì)象中的數(shù)據(jù)一樣,除非使用StateService或SQL State會(huì)話模式存儲(chǔ)Session數(shù)據(jù))。
具體的使用和語(yǔ)法與Session和Application一樣。轉(zhuǎn)換回來(lái)的時(shí)候需要注意對(duì)其進(jìn)行相應(yīng)類型的強(qiáng)制類型轉(zhuǎn)換。

這不是在ASP.NET緩存中添加緩存項(xiàng)的惟一方式。Cache對(duì)象有兩個(gè)方法Insert()方法和Add()方法,它們靈活性更高。它們的用法近似,但稍有不同:
Insert()方法用于覆蓋ASP.NET緩存中現(xiàn)有的緩存項(xiàng)。
Add()方法只用于在ASP.NET緩存中添加新的緩存項(xiàng)(如果用它覆蓋現(xiàn)有的緩存項(xiàng),則會(huì)失敗)。
每個(gè)方法都有7個(gè)參數(shù),而且兩個(gè)方法的參數(shù)相同。
在緩存某一項(xiàng)時(shí),可以指定它的相關(guān)性,告訴ASP.NET緩存頁(yè)面在緩存中一直保留到某個(gè)事件發(fā)生時(shí)為止。

感謝各位的閱讀!關(guān)于“ASP.NET如何緩存頁(yè)面”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí),如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI