共用方式為


HOW TO:使用自訂字串快取頁面的多個版本

更新:2007 年 11 月

除了根據瀏覽器類型和參數改變輸出快取之外,還可根據所定義之方法傳回的不同字串,快取網頁輸出的多個版本。

根據自訂字串快取網頁時,首先指定要使用之自訂字串的識別項。然後在應用程式的 Global.asax 檔中建立方法,該檔案會接受識別項並傳回值以根據該值改變輸出快取。

若要根據自訂字串快取網頁輸出的多個版本

  1. 請在 ASP.NET Web 網頁中,納入具有必要之 DurationVaryByParam 屬性 (Attribute) 的 @ OutputCache 指示詞。Duration 屬性必須設定為大於零的整數。如果您不想使用 VaryByParam 屬性所提供的功能,請將它的值設定為 "None"。

  2. 若要以宣告方式設定自訂字串,請在 @ OutputCache 指示詞中,包含已設定為您想要據以變更輸出快取之字串的 VaryByCustom 屬性。

    下列指示詞根據自訂字串「minorversion」變更網頁輸出。

    <%@ OutputCache Duration="10" VaryByParam="None" VaryByCustom="minorversion" %>
    
  3. 若要以程式的方式設定自訂字串,請呼叫 SetVaryByCustom 方法並將其傳遞給自訂字串使用。

    在下列程式碼中,示範了如何將自訂字串設為 "minorversion"。

    Response.Cache.SetVaryByCustom("minorversion");
    
    Response.Cache.SetVaryByCustom("minorversion")
    
    注意事項:

    如果您嘗試以程式設計方式兼以宣告方式設定自訂字串,將會收到 InvalidOperationException。您必須選擇一個方式或其他辦法。

  4. 在應用程式的 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>
    

請參閱

工作

HOW TO:以宣告方式設定 ASP.NET 網頁的快取性

概念

快取 ASP.NET Web 網頁

設定網頁的快取性

快取網頁的多個版本