ASP.NET OutputCache詳解
當用戶訪問頁面時,整個頁面將會被服務器保存在內(nèi)存中,這樣就對頁面進行了緩存。當用戶再次訪問該頁,頁面不會再次執(zhí)行數(shù)據(jù)操作,頁面首先會檢查服務器中是否存在緩存,如果緩存存在,則直接從緩存中獲取頁面信息,如果頁面不存在,則創(chuàng)建緩存。
頁面輸出緩存適用于那些數(shù)據(jù)量較多,而不會進行過多的事件操作的頁面,如果一個頁面需要執(zhí)行大量的事件更新,以及數(shù)據(jù)更新,則并不能使用頁面輸出緩存。使用@OutputCatch指令能夠聲明頁面輸出緩存,示例代碼如下所示。
<%@ OutputCache Duration="120" VaryByParam="none" %>
上述代碼使用@OutputCatch指令聲明了頁面緩存,該頁面將被緩存120秒。@OutputCatch指令包括10個屬性,通過這些屬性能夠分別為頁面的不同情況進行緩存設(shè)置,常用的屬性如下所示:
CacheProfile:獲取或設(shè)置OutputCacheProfile名稱。
Duration:獲取或設(shè)置緩存項需要保留在緩存中的時間。
VaryByHeader:獲取或設(shè)置用于改變緩存項的一組都好分隔的HTTP標頭名稱。
Location:獲取或設(shè)置一個值,該值確定緩存項的位置,包括Any、Clint、Downstream、None、Server和ServerAndClient。默認值為Any。
VaryByControl:獲取或設(shè)置一簇分好分隔的控件標識符,這些標識符包含在當前頁或用戶控件內(nèi),用于改變當前的緩存項。
NoStore:獲取或設(shè)置一個值,該值確定是否設(shè)置了“Http Cache-Control:no-store”指令。
VaryByCustom:獲取輸出緩存用來改變緩存項的自定義字符串列表。
Enabled:獲取或設(shè)置一個值,該值指示是否對當前內(nèi)容啟用了輸出緩存。
VaryByParam:獲取查詢字符串或窗體POST參數(shù)的列表。
通過設(shè)置相應的屬性,可以為頁面設(shè)置相應的緩存,當需要為Default.aspx設(shè)置緩存項時,可以使用VaryByParam屬性進行設(shè)置,示例代碼如下所示。
<%@ OutputCache Duration="120" VaryByParam="none" %>
上述代碼使用了Duration屬性和VarByParam屬性設(shè)置了當前頁的緩存屬性。為一個頁面進行整體的緩存設(shè)置往往是沒有必要的,常常還會造成困擾,例如Default.aspx?id=1和Default.aspx?id=100在緩存時可能呈現(xiàn)的頁面是相同的,這往往不是開發(fā)人員所希望的。通過配置VarByParam屬性能夠指定緩存參數(shù),示例代碼如下所示。
<%@ OutputCache Duration="120" VaryByParam="id" %>
上述代碼則通過參數(shù)id進行緩存,當id項不同時,ASP.NET所進行的頁面緩存也不盡相同。這樣保證了Default.aspx?id=1和Default.aspx?id=100在緩存時所顯示的頁面并不一致。VarByHeader和VarByCustom主要用于根據(jù)訪問頁面的客戶端對頁面的外觀或內(nèi)容進行自定義。在ASP.NET中,一個頁面可能需要為PC用戶和MOBILE用戶呈現(xiàn)輸出,因此可以通過客戶端的版本不同來緩存不同的數(shù)據(jù),示例代碼如下所示。
<%@ OutputCache Duration="120" VaryByParam="none" VaryByCustom="browser" %>
上述代碼則為每個瀏覽器單獨設(shè)置了緩存條目。
相關(guān)文章
.NET的DateTime函數(shù)獲取上個月的起始和截止時間的方法
這篇文章主要介紹了NET的DateTime函數(shù)獲取上個月的起始和截止時間的方法,可廣泛使用于報表中的時間自動選擇功能,是非常實用的技巧,需要的朋友可以參考下2015-01-01
ASP.NET Core應用錯誤處理之StatusCodePagesMiddleware中間件針對響應碼呈現(xiàn)錯誤頁面
這篇文章主要給大家介紹了關(guān)于ASP.NET Core應用錯誤處理之StatusCodePagesMiddleware中間件針對響應碼呈現(xiàn)錯誤頁面的相關(guān)資料,需要的朋友可以參考下2019-01-01
asp.net下Linq To Sql注意事項小結(jié)
對于Linq 連接數(shù)據(jù)庫進行操作時需注意的問題2008-10-10
uni-app結(jié)合.NET?7實現(xiàn)微信小程序訂閱消息推送
本文主要介紹了uni-app結(jié)合.NET?7實現(xiàn)微信小程序訂閱消息推送,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2023-02-02
ASP.NET將Session保存到數(shù)據(jù)庫中的方法
因為ASP.NET中Session的存取機制與ASP相同,都是保存在進行中, 一旦進程崩潰,所有Session信息將會丟失,所以我采取了將Session信息保存到SQL Server中,盡管還有其它的2013-08-08

