@ OutputCache
[このドキュメントはプレビューのみを目的としており、以降のリリースで変更される可能性があります。プレースホルダーとして空白のトピックが含まれています。]
ASP.NET ページ、またはページ内に含まれるユーザー コントロールの出力キャッシュ ポリシーを宣言によって制御します。 出力キャッシュの詳細については、「ASP.NET Caching Features」を参照してください。
<%@ OutputCache Duration="#ofseconds"
Location="Any | Client | Downstream | Server | None |
ServerAndClient "
Shared="True | False"
VaryByControl="controlname"
VaryByCustom="browser | customstring"
VaryByHeader="headers"
VaryByParam="parametername"
VaryByContentEncoding="encodings"
CacheProfile="cache profile name | ''"
NoStore="true | false"
SqlDependency="database/table name pair | CommandNotification"
ProviderName="Provider Name"
%>
属性
Duration
ページまたはユーザー コントロールがキャッシュされる、秒単位の時間。 ページまたはユーザー コントロールでこの属性を設定すると、オブジェクトからの HTTP 応答に対する有効期限ポリシーが確立され、ページまたはユーザー コントロールの出力が自動的にキャッシュされます。注意
この属性は必須です。この属性を設定しないと、パーサー エラーが発生します。
Location
OutputCacheLocation 列挙値のいずれか。 既定値は、Any です。注意
この属性は、ユーザー コントロール (.ascx ファイル) の @ OutputCache ディレクティブではサポートされません。
CacheProfile
ページに関連付けるキャッシュ設定の名前。 これは省略可能な属性で、既定値は空の文字列 ("") です。注意
この属性は、ユーザー コントロール (.ascx ファイル) の @ OutputCache ディレクティブではサポートされません。これがページで指定されている場合、この値が outputCacheSettings セクションの outputCacheProfiles 要素で使用可能なエントリのどれかの名前と一致する必要があります。名前が一致するプロファイル エントリがない場合、例外がスローされます。
NoStore
機密情報のセカンダリ記憶を実行されないようにするかどうかを指定するブール値。注意
この属性は、ユーザー コントロール (.ascx ファイル) の @ OutputCache ディレクティブではサポートされません。この属性を true に指定することは、要求で次のコードを実行することに相当します。
Response.Cache.SetNoStore();
ProviderName
使用するカスタム出力キャッシュ プロバイダーを識別する文字列値。 詳細については、このトピックの「解説」セクション、および Scott Guthrie のブログの「Extensible Output Caching with ASP.NET 4 (VS 2010 and .NET 4.0 Series) (ASP.NET 4 の拡張性がある出力キャッシュ (VS 2010 および .NET 4.0 シリーズ))」を参照してください。注意
この属性は、ユーザー コントロール (.ascx ファイル) でのみサポートされます。この属性は、ASP.NET ページ (.aspx ファイル) の @ OutputCache ディレクティブではサポートされません。
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 プロパティ値を表します。 詳細については、「Caching Portions of an ASP.NET Page」を参照してください。注意
@ OutputCache ディレクティブを ASP.NET ページまたはユーザー コントロールで使用する場合、この属性または VaryByParam 属性が必要です。
VaryByContentEncodings
出力キャッシュの変更に使用される文字列のセミコロン区切りのリスト。 VaryByContentEncodings 属性は、Accept-Encoding ヘッダーと共に使用して、さまざまなコンテンツ エンコーディングでのキャッシュされた応答の処理方法を決定します。 Accept-Encoding ヘッダーの指定方法の詳細については、W3C Web サイトの『Hypertext Transfer Protocol -- HTTP/1.1』仕様のセクション 14.3 を参照してください。
解説
ページ出力キャッシュに値を設定することは、SetExpires メソッドおよび SetCacheability メソッドを Cache プロパティを介して操作することと同じです。
ユーザーが Web フォーム ページを表示するために承認が必要な場合、出力キャッシュは Cache-Control HTTP ヘッダーを private に設定します。 これらのトピックの詳細については、「Caching ASP.NET Pages」を参照してください。
Shared 属性を true に設定すると、複数の Web フォーム ページから、キャッシュされたユーザー コントロール出力にアクセスできます。 true に設定しなかった場合、既定では、ユーザー コントロールを含むページそれぞれに対して、ユーザー コントロール出力が 1 つずつキャッシュされます。 Shared 属性を有効にすると、大量のメモリ空間を節約できる可能性があります。 詳細については、「Caching Portions of an ASP.NET Page」を参照してください。
使用例
ページやユーザー コントロールが出力キャッシュされる期間を設定する方法を次のコード例に示します。
<%@ OutputCache Duration="100" VaryByParam="none" %>
出力キャッシュに対して、フォームの POST メソッドの location フォーム パラメーターおよび count フォーム パラメーターに従って、またはクエリ文字列に従って、ページまたはユーザー コントロールをキャッシュするよう指示する方法を、次のコード例に示します。 location または count パラメーター (またはその両方) が異なる各 HTTP 要求は、到着すると 10 秒間キャッシュされます。 同じパラメーター値を持つ後続の要求に対しては、エントリの有効期限が切れるまでキャッシュから読み込まれます。
<%@ OutputCache Duration="10" VaryByParam="location;count" %>