方法 : カスタム文字列を使用してページの複数のバージョンをキャッシュする

更新 : 2007 年 11 月

出力キャッシュをブラウザの種類およびパラメータにより切り替える以外に、定義したメソッドから返されるさまざまな文字列に基づいて、複数のバージョンのページ出力をキャッシュできます。

カスタム文字列に基づいてページをキャッシュするには、まず使用するカスタム文字列の識別子を指定します。次に、アプリケーションの Global.asax ファイル内に、この識別子を受け取り、出力キャッシュを切り替える基準となる値を返すメソッドを作成します。

カスタム文字列に基づいてページ出力の複数のバージョンをキャッシュするには

  1. ASP.NET ページに、必須の Duration 属性と VaryByParam 属性を持つ @ OutputCache ディレクティブを含めます。Duration 属性は、0 より大きい整数に設定する必要があります。VaryByParam 属性によって提供される機能を使用しない場合は、値を "None" に設定する必要があります。

  2. カスタム文字列を宣言によって設定するには、出力キャッシュを切り替える基準となる文字列を設定した VaryByCustom 属性を @ OutputCache ディレクティブで指定します。

    "minorversion" というカスタム文字列によってページ出力を切り替えるディレクティブを次に示します。

    <%@ OutputCache Duration="10" VaryByParam="None" VaryByCustom="minorversion" %>
    
  3. カスタム文字列をプログラムによって設定するには、SetVaryByCustom メソッドを呼び出し、使用するカスタム文字列を渡します。

    カスタム文字列を "minorversion" に設定する方法のコード例を次に示します。

    Response.Cache.SetVaryByCustom("minorversion");
    
    Response.Cache.SetVaryByCustom("minorversion")
    
    5ecf4420.alert_note(ja-jp,VS.90).gifメモ :

    カスタム文字列をプログラムまたは宣言で設定する場合、InvalidOperationException を取得します。どちらかの方法を選択する必要があります。

  4. アプリケーションの Global.asax ファイルで、GetVaryByCustomString メソッドをオーバーライドして、カスタム文字列の出力キャッシュの動作を指定します。

    オーバーライドされたメソッドは、その arg パラメータとして、VaryByCustom 属性または SetVaryByCustom メソッドで設定した文字列を受け取ります。たとえば、要求側ブラウザのマイナ バージョンに基づいてキャッシュされるページがあるとします。このようなページについては、VaryByCustom 属性を "minorversion" に設定できます。オーバーライドされた GetVaryByCustomString メソッドで、arg パラメータをチェックし、arg パラメータが "minorversion" かどうかに応じて異なる文字列を返すことができます。

    GetVaryByCustomString メソッドをオーバーライドした Global.asax ファイルのコード例を次に示します。

    <%@ Application language="C#" %>
    <script runat="server">
    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 runat="server">
    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>
    

参照

処理手順

方法 : ASP.NET ページのキャッシュを宣言によって設定する

概念

ASP.NET ページのキャッシュ

ページのキャッシュの設定

ページの複数バージョンのキャッシュ