溫馨提示×

溫馨提示×

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

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么進行ASP.NET頁面輸出緩存

發(fā)布時間:2021-10-28 15:51:48 來源:億速云 閱讀:88 作者:柒染 欄目:編程語言

今天就跟大家聊聊有關怎么進行ASP.NET頁面輸出緩存,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。

最近因項目要求,需要研究ASP.NET緩存,可是查閱了書本,msdn,網上后有點失望,真是天下文章一大抄啊,大家講來講去都是那么幾點,沒有條理,沒有重點,也沒有心得,所以我決定自己來寫一篇,當然,我是沒有能力來改變這一現象的,只是寫來自己備忘罷了。

首先有幾點要說明:

1.個人認為緩存只有兩種:ASP.NET頁面輸出緩存與應用程序數據緩存。一般大家也是這么認為的,但是有另外一部份人卻把這兩個部份分了又分,搞出三五種出來。這就讓人感覺很多余了。

2.所謂控件緩存,其實是用戶控件緩存??赡苁俏依斫庥袉栴},我一開始還以為那種html控件,web控件也可以進行緩存的。所以說定義名稱要定義清楚。

3.實現緩存有兩種方式:在aspx頁面的頂部寫頁處理指令或者在cs代碼里寫代碼(又叫緩存API),一種是靜態(tài)設置,一各是動態(tài)設置。網上總有些人喜歡說來說去又不總結清楚,搞的人很煩。

4.實際上只要用到了緩存就一定有緩存依賴。只是有些不那么明顯。在我看的文章里一般都把緩存依賴單獨作為一章講解,這是好事,因為在緩存的高級技術里緩存依賴是很重要的,但這并不代表有些緩存就沒有緩存依賴。

好了,下面言歸正傳。我只講常用的東東。

ASP.NET頁面輸出緩存。其實用戶控件緩存跟它沒有大的區(qū)別,只有一個location不能使用,在這里就一并講了吧。
page指令:

<%@ OutputCache Duration="10" VaryByParam="*" VaryByControl="txtInput" %>

OutputCache是指令名。Duration是緩存時長,單位是秒。VaryByParam是跟據什么進行緩存。有兩個特殊的值:none表示不隨任何參數的不同而緩存,就是只緩存一個版本,表示隨任何參數的不同而緩存,表示只要參數發(fā)生變化,就緩存一個新版本。VaryByControl是跟據控件名進行緩存。這里的控件是指一般的服務器控件,不能是用戶控件,不然會出現意想不到的結果。

緩存API:
雖然ASP.NET頁面輸出緩存與用戶控件緩存在頁面指令方面差不多,但在api上面有所區(qū)別

頁面緩存api:
映射的是System.Web.HttpCachePolicy類。
Response.Cache.SetCacheability(HttpCacheability.Public);
Response.Cache.SetExpires(DateTime.Now.AddSeconds(3));

***句對應的是Location,是說緩存在哪,public是哪里都緩存,nocache是都不緩存,private是客戶端緩存,還有其它幾個選項。比較關注的是:客戶端,代理服務器,服務器。
第二句對應的是Duration,是說緩存時長,這是個絕對時間,是說到了那個時就是取消緩存。Response.Cache.VaryByParams["none"] = true;
對應的是VaryByParam用中括號括起參數,中間可用分號分隔多個參數,true表示啟用此參數。沒有對應VaryByControl的。

Response.Cache.SetSlidingExpiration(true);
當用了這一句的時候,所有緩存設置都不啟作用了,原因是這個屬性是用給代理服務器之類的處于瀏覽器和Web服務器之間的緩存使用的,而不是給Web服務器本身的.是特意設計成這樣的.Response.Cache.SetNoServerCaching(),表示取消當前所有服務器緩存。

看完上述內容,你們對怎么進行ASP.NET頁面輸出緩存有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業(yè)資訊頻道,感謝大家的支持。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI