@ OutputCache

ASP.NET ページ、またはページ内に含まれるユーザー コントロールの出力キャッシュ ポリシーを宣言によって制御します。出力キャッシュの詳細については、「ASP.NET のキャッシュ機能」を参照してください。

<%@ OutputCache Duration="#ofseconds"
   Location="Any | Client | Downstream | Server | None | 
     ServerAndClient "
   Shared="True | False"
   VaryByControl="controlname"
   VaryByCustom="browser | customstring"
   VaryByHeader="headers"
   VaryByParam="parametername" 
   CacheProfile="cache profile name | ''"
   NoStore="true | false"
   SqlDependency="database/table name pair | CommandNotification"
%>

属性

  • Duration
    ページまたはユーザー コントロールがキャッシュされる、秒単位の時間。ページまたはユーザー コントロールでこの属性を設定すると、オブジェクトからの HTTP 応答に対する有効期限ポリシーが確立され、ページまたはユーザー コントロールの出力が自動的にキャッシュされます。

    注意

    この属性は必須です。この属性を設定しないと、パーサー エラーが発生します。

  • Location
    OutputCacheLocation 列挙値のいずれか。既定値は Any です。

    注意

    この属性は、ユーザー コントロール (.ascx ファイル) の @ OutputCache ディレクティブではサポートされません。

  • CacheProfile
    ページに関連付けるキャッシュ設定の名前。これは省略可能な属性で、既定値は空の文字列 ("") です。

    注意

    この属性は、ユーザー コントロール (.ascx ファイル) の @ OutputCache ディレクティブではサポートされません。これがページで指定されている場合、この値が outputCacheSettings セクションの outputCacheProfiles 要素で使用可能なエントリのどれかの名前と一致する必要があります。名前が一致するプロファイル エントリがない場合、例外がスローされます。

  • NoStore
    機密情報のセカンダリ記憶を実行されないようにするかどうかを指定するブール値。

    注意

    この属性は、ユーザー コントロール (.ascx ファイル) の @ OutputCache ディレクティブではサポートされません。この属性を true に指定することは、要求で次のコードを実行することに相当します。

                Response.Cache.SetNoStore();
    
  • Shared
    ユーザー コントロール出力を複数のページで共有可能にするかどうかを指定するブール値。既定値は false です。詳細については、「解説」を参照してください。

    注意

    この属性は、ASP.NET ページ (.aspx ファイル) の @ OutputCache ディレクティブではサポートされません。

  • SqlDependency
    ページまたはコントロールの出力キャッシュの依存先であるデータベースのセットとテーブル名のペア示す文字列値。SqlCacheDependency クラスは、出力キャッシュが依存するデータベース内のテーブルを監視します。これにより、テーブルの項目が更新されると、テーブル ベースのポーリングが使用された際に、更新された項目はキャッシュから削除されます。値が CommandNotification の通知を (Microsoft SQL Server 2005 で) 使用すると、最終的に、SQL Server 2005 サーバーを使用するクエリ通知の登録には SqlDependency クラスが使用されます。

    注意

    SqlDependency 属性の CommandNotification 値は、Web (.aspx) ページでのみ有効です。ユーザー コントロールで使用できるのは、@ OutputCache ディレクティブを使用したテーブル ベースのポーリングのみです。

  • VaryByCustom
    カスタム出力キャッシュ要件を表す任意のテキスト。この属性に値 browser を設定すると、キャッシュはブラウザの名前やメジャー バージョン情報によって切り替えられます。カスタム文字列が入力された場合、アプリケーションの Global.asax ファイルの GetVaryByCustomString メソッドをオーバーライドする必要があります。
  • VaryByHeader
    出力キャッシュを切り替えるために使われる各 HTTP ヘッダーをセミコロンで区切ったリスト。この属性を複数のヘッダーに設定すると、指定したヘッダーの組み合わせごとに、要求されたドキュメントの異なるバージョンが出力キャッシュに格納されます。

    注意

    VaryByHeader 属性を設定すると、ASP.NET キャッシュだけでなく、すべての HTTP バージョン 1.1 キャッシュ内のアイテムをキャッシュできます。この属性は、ユーザー コントロールの @ OutputCache ディレクティブではサポートされません。

  • VaryByParam
    出力キャッシュを切り替えるために使われる各文字列をセミコロンで区切ったリスト。既定では、これらの文字列は GET メソッドの属性を使用して送信されるクエリ文字列値か、または POST メソッドを使用して送信されるパラメータに相当します。この属性を複数のパラメータに設定すると、指定したパラメータの組み合わせごとに、要求されたドキュメントの異なるバージョンが出力キャッシュに格納されます。設定できる値には、none*、有効な任意のクエリ文字列、POST パラメータ名があります。

    ヒント

    @ OutputCache ディレクティブを ASP.NET ページまたはユーザー コントロールで使用する場合、この属性または VaryByControl 属性が必要です。この属性を設定しないと、パーサー エラーが発生します。キャッシュされるコンテンツを切り替えるパラメータを指定しない場合は、値を none に設定します。すべてのパラメータ値ごとに出力キャッシュを切り替えるには、この属性をアスタリスク (*) に設定します。

  • VaryByControl
    ユーザー コントロールの出力キャッシュを切り替えるために使われる各文字列をセミコロンで区切ったリスト。これらの文字列は、ユーザー コントロールで宣言された、ASP.NET サーバー コントロールの ID プロパティ値を表します。詳細については、「ASP.NET ページの一部だけのキャッシュ」を参照してください。

    注意

    @ OutputCache ディレクティブを ASP.NET ページまたはユーザー コントロールで使用する場合、この属性または VaryByParam 属性が必要です。

解説

ページ出力キャッシュに値を設定することは、SetExpires メソッドおよび SetCacheability メソッドを Cache プロパティを介して操作することと同じです。

ユーザーが Web フォーム ページを表示するために承認が必要な場合、出力キャッシュは Cache-Control HTTP ヘッダーを private に設定します。これらのトピックの詳細については、「ASP.NET ページのキャッシュ」を参照してください。

Shared 属性を true に設定すると、複数の Web フォーム ページから、キャッシュされたユーザー コントロール出力にアクセスできます。この属性を true に設定しない場合は、既定の動作として、ユーザー コントロールを含むページごとに 1 つのバージョンのユーザー コントロール出力がキャッシュされます。Shared 属性を有効にすると、大量のメモリ空間を節約できる可能性があります。詳細については、「ASP.NET ページの一部だけのキャッシュ」を参照してください。

使用例

ページやユーザー コントロールが出力キャッシュされる期間を設定する方法を次のコード例に示します。

<%@ OutputCache Duration="100" VaryByParam="none" %>

出力キャッシュに対して、フォームの POST メソッドの location フォーム パラメータおよび count フォーム パラメータに従って、またはクエリ文字列に従って、ページまたはユーザー コントロールをキャッシュするよう指示する方法を、次のコード例に示します。location または count パラメータ (またはその両方) が異なる各 HTTP 要求は、到着すると 10 秒間キャッシュされます。同じパラメータ値を持つ後続の要求に対しては、エントリの有効期限が切れるまでキャッシュから読み込まれます。

<%@ OutputCache Duration="10" VaryByParam="location;count" %>

参照

関連項目

ディレクティブ構文

概念

ASP.NET ページのキャッシュ
ASP.NET ページの一部だけのキャッシュ
ASP.NET Web ページの構文の概要