快取網頁的多個版本
更新:2007 年 11 月
有時您想要快取會根據要求建立不同版本的網頁。例如,網頁可能會根據查詢字串中傳遞的值而有不同的輸出。
ASP.NET 可以讓您在輸出快取中,快取相同網頁的多個版本。您可以根據下列條件而有不同的輸出快取:
初始要求 (HTTP GET) 中的查詢字串
回傳所傳遞的控制項值 (HTTP POST 值)
隨要求一起傳遞的 HTTP 標頭
提出要求之瀏覽器的主要版本號碼
網頁中的自訂字串。在這種情況下,您可以在 Global.asax 檔中建立自訂程式碼以指定網頁的快取行為
您可以使用 @ OutputCache 指示詞的屬性 (Attribute),以宣告方式快取網頁輸出的多個版本,並且使用 HttpCachePolicy 類別的屬性 (Property) 和方法,以程式設計方式快取網頁輸出的多個版本。
@ OutputCache 指示詞包含四個屬性,能夠讓您快取網頁輸出的多個版本:
VaryByParam 屬性可以讓您根據查詢字串而有不同的快取輸出
VaryByControl 屬性可以讓您根據控制項值而有不同的快取輸出
VaryByHeader 屬性可以讓您根據要求的 HTTP 標頭而有不同的快取輸出
VaryByCustom 屬性可以讓您根據瀏覽器類型或定義的自訂字串,而有不同的快取輸出
注意事項: 您必須在任何 @ OutputCache 指示詞中包含 VaryByParam 屬性或 VaryByControl 屬性兩者之一。然而,如果您不需要根據控制項或參數而有不同的快取輸出,可以定義 VaryByParam,並將它的值設定為 None。
HttpCachePolicy 類別提供兩種屬性和一種方法,可以讓您以程式設計方式,指定能夠使用宣告方式設定的相同快取組態。VaryByParams 和 VaryByHeaders 屬性可以讓您分別指定查詢字串參數和標頭名稱,您可以利用這些參數和名稱產生不同的快取原則。SetVaryByCustom 方法可以讓您定義自訂字串,而根據這個字串會有不同的輸出快取。