HOW TO:使用自訂字串快取頁面的多個版本
更新:2007 年 11 月
除了根據瀏覽器類型和參數改變輸出快取之外,還可根據所定義之方法傳回的不同字串,快取網頁輸出的多個版本。
根據自訂字串快取網頁時,首先指定要使用之自訂字串的識別項。然後在應用程式的 Global.asax 檔中建立方法,該檔案會接受識別項並傳回值以根據該值改變輸出快取。
若要根據自訂字串快取網頁輸出的多個版本
請在 ASP.NET Web 網頁中,納入具有必要之 Duration 和 VaryByParam 屬性 (Attribute) 的 @ OutputCache 指示詞。Duration 屬性必須設定為大於零的整數。如果您不想使用 VaryByParam 屬性所提供的功能,請將它的值設定為 "None"。
若要以宣告方式設定自訂字串,請在 @ OutputCache 指示詞中,包含已設定為您想要據以變更輸出快取之字串的 VaryByCustom 屬性。
下列指示詞根據自訂字串「minorversion」變更網頁輸出。
<%@ OutputCache Duration="10" VaryByParam="None" VaryByCustom="minorversion" %>
若要以程式的方式設定自訂字串,請呼叫 SetVaryByCustom 方法並將其傳遞給自訂字串使用。
在下列程式碼中,示範了如何將自訂字串設為 "minorversion"。
Response.Cache.SetVaryByCustom("minorversion");
Response.Cache.SetVaryByCustom("minorversion")
注意事項: 如果您嘗試以程式設計方式兼以宣告方式設定自訂字串,將會收到 InvalidOperationException。您必須選擇一個方式或其他辦法。
在應用程式的 Global.asax 檔中,覆寫 GetVaryByCustomString 方法以指定自訂字串之輸出快取的行為。
做為其 arg 參數,覆寫的方法會接受您在 VaryByCustom 屬性或在 SetVaryByCustom 方法中所設定的字串。例如,您可能具有根據要求瀏覽器之次要版本快取的網頁。對於這些網頁,您可以將 VaryByCustom 屬性設定為 "minorversion"。之後,在覆寫的 GetVaryByCustomString 方法中,您可以檢查 arg 參數,並根據 arg 參數的值是否為 "minorversion" 而傳回不同的字串。
在下列程式碼中,示範了其 GetVaryByCustomString 方法已覆寫的 Global.asax 檔。
<%@ Application language="C#" %> <script > public override string GetVaryByCustomString(HttpContext context, string arg) { if(arg == "minorversion") { return "Version=" + context.Request.Browser.MinorVersion.ToString(); } return base.GetVaryByCustomString(context, arg); } </script>
<script > Public Overrides Function GetVaryByCustomString(context _ As HttpContext, arg As String) As String If (arg = "minorversion") Then Return "Version=" & _ context.Request.Browser.MinorVersion.ToString() return base.GetVaryByCustomString(context, arg); End Function </script>