這篇文章主要介紹了ASP.NET OutputCache詳解,本文詳細講解了OutputCache的文法、OutputCache的參數、OutputCache使用樣本等內容,需要的朋友可以參考下
當使用者訪問頁面時,整個頁面將會被伺服器儲存在記憶體中,這樣就對頁面進行了緩衝。當使用者再次訪問該頁,頁面不會再次執行資料操作,頁面首先會檢查伺服器中是否存在緩衝,如果緩衝存在,則直接從緩衝中擷取頁面資訊,如果頁面不存在,則建立緩衝。
網頁輸出快取適用於那些資料量較多,而不會進行過多的事件操作的頁面,如果一個頁面需要執行大量的事件更新,以及資料更新,則並不能使用網頁輸出快取。使用@OutputCatch指令能夠聲明網頁輸出快取,範例程式碼如下所示。
代碼如下:
<%@ OutputCache Duration="120" VaryByParam="none" %>
上述代碼使用@OutputCatch指令聲明了頁面緩衝,該頁面將被緩衝120秒。@OutputCatch指令包括10個屬性,通過這些屬效能夠分別為頁面的不同情況進行緩衝設定,常用的屬性如下所示:
CacheProfile:擷取或設定OutputCacheProfile名稱。
Duration:擷取或設定快取項目需要保留在緩衝中的時間。
VaryByHeader:擷取或設定用於改變快取項目的一組都好分隔的HTTP標題名稱。
Location:擷取或設定一個值,該值確定快取項目的位置,包括Any、Clint、Downstream、None、Server和ServerAndClient。預設值為Any。
VaryByControl:擷取或設定一簇分好分隔的控制項標識符,這些標識符包含在當前頁或使用者控制項內,用於改變當前的快取項目。
NoStore:擷取或設定一個值,該值確定是否設定了“Http Cache-Control:no-store”指令。
VaryByCustom:擷取輸出緩衝用來改變快取項目的自訂字串列表。
Enabled:擷取或設定一個值,該值指示是否對當前內容啟用了輸出緩衝。
VaryByParam:擷取查詢字串或表單POST參數的列表。
通過設定相應的屬性,可以為版面設定相應的緩衝,當需要為Default.aspx設定快取項目時,可以使用VaryByParam屬性進行設定,範例程式碼如下所示。
代碼如下:
<%@ OutputCache Duration="120" VaryByParam="none" %>
上述代碼使用了Duration屬性和VarByParam屬性設定了當前頁的緩衝屬性。為一個頁面進行整體的緩衝設定往往是沒有必要的,常常還會造成困擾,例如Default.aspx?id=1和Default.aspx?id=100在緩衝時可能呈現的頁面是相同的,這往往不是開發人員所希望的。通過配置VarByParam屬效能夠指定緩衝參數,範例程式碼如下所示。
代碼如下:
<%@ OutputCache Duration="120" VaryByParam="id" %>
上述代碼則通過參數id進行緩衝,當id項不同時,ASP.NET所進行的頁面緩衝也不盡相同。這樣保證了Default.aspx?id=1和Default.aspx?id=100在緩衝時所顯示的頁面並不一致。VarByHeader和VarByCustom主要用於根據訪問頁面的用戶端對頁面的外觀或內容進行自訂。在ASP.NET中,一個頁面可能需要為PC使用者和MOBILE使用者呈現輸出,因此可以通過用戶端的版本不同來緩衝不同的資料,範例程式碼如下所示。
代碼如下:
<%@ OutputCache Duration="120" VaryByParam="none" VaryByCustom="browser" %>
上述代碼則為每個瀏覽器單獨設定了緩衝條目。