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

5576 ワード

静的ページのすべての内容はサーバメモリに保存されます.リクエストがある場合、キャッシュ内の関連データは、キャッシュデータが期限切れになるまで直接出力されます.このプロセスでは、キャッシュはページ処理のライフサイクルを再び通過する必要はありません.これにより、リクエスト応答時間を短縮し、アプリケーションのパフォーマンスを向上させることができます.ページ出力キャッシュは、生成されたページをコンパイルするのに頻繁にデータを更新する必要がなく、生成されたページをコンパイルするのに多くの時間とリソースを費やすのに適していることは明らかです.データが頻繁に更新されるページには適用されません.デフォルトでは、ASP.NET 2.0はページ出力キャッシュ機能を有効にしているが、応答の出力はキャッシュされていない.開発者は、一部のページの応答がキャッシュの一部になるように設定する必要があります.
ページ出力キャッシュを設定するには、@OutputCacheコマンドを使用するか、ページ出力キャッシュAPIを使用するかの2つの方法があります.@OutputCache指令はかつてASP.NET 1.xに出現し、ASP.NET 2.0では継承と強化が得られた.ページ出力キャッシュAPIは、主にHttpCachePolicyクラスを指す.
@OutputCacheコマンドの使用
@OutputCacheコマンドを使用すると、ページ出力キャッシュの一般的なニーズを実現できます.@OutputCache指令はASP.NETページまたはページに含まれるユーザーコントロールのヘッダ宣言.この方式は非常に便利で、いくつかの簡単な属性設定だけで、ページの出力キャッシュポリシーを実現することができます.@OutputCache命令宣言コードは以下の通りです.@ OutputCache

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

@OutputCache命令には、上述したように、CacheProfile、NoStore、Duration、Shared、Location、SqlDependency、VaryByControl、VaryByCustom、VaryByHeader、VaryByParamの10個の属性が含まれる.これらのプロパティは、キャッシュ時間、キャッシュ・アイテムの場所、SQLデータ・キャッシュ依存性など、さまざまな面で設定されます.以上の属性の基本概念を簡単に説明します.
CacheProfile
ページに関連付けられたキャッシュ設定を定義する名前.はオプションの属性で、デフォルトは空白文字("")です.なお、ユーザコントロールに含まれる@OutputCacheコマンドでは、この属性はサポートされていません.ページでこの属性を指定する場合、属性値はWebとする必要があります.configファイル構成セクションのoutputCacheProfiles要素の1つの使用可能なアイテムの名前が一致します.この名前がプロファイル・アイテムと一致しない場合、例外が発生します.
NoStore
このプロパティは、機密情報の2次ストレージをブロックするかどうかを決定するブール値を定義します.なお、ユーザコントロールに含まれる@OutputCacheコマンドでは、この属性はサポートされていません.このプロパティをtrueに設定すると、リクエスト中にコード「Response.CAche.SetNoStore();」を実行するのと同じです.
Duration
ページまたはユーザーコントロールのキャッシュ時間を設定します.単位は秒です.このプロパティを設定することで、オブジェクトからのHTTP応答の有効期限切れポリシーを確立し、自動キャッシュページまたはユーザーコントロールを出力できます.Durationプロパティが必要であることに注意してください.そうしないと、アナライザエラーが発生します.
Shared
このプロパティは、ユーザーコントロールの出力が複数のページで共有できるかどうかを決定するブール値を定義します.デフォルトはfalseです.なお、ASPに含める.NETページの@OutputCache命令ではこの属性はサポートされていません.
Location
出力キャッシュ・アイテムの場所を指定します.属性値は、Any、Client、Downstream、None、Server、およびServer AndClientのOutputCacheLocation列挙値です.デフォルト値はAnyで、クライアントブラウザ、プロキシサーバ、または処理要求のサーバなど、すべての要求に出力キャッシュが使用できることを示します.なお、ユーザコントロールに含まれる@OutputCacheコマンドでは、この属性はサポートされていません. 
SqlDependency
このプロパティは、データベース/テーブル名ペアのセットの文字列値を識別します.ページまたはコントロールの出力キャッシュは、これらの名前ペアに依存します.注意:SqlCacheDependencyクラスは、出力キャッシュに依存するデータベース内のテーブルを監視するため、テーブル内のアイテムを更新するときにテーブルベースのポーリングを使用してキャッシュから削除します.通知(SQL Server 2005)がCommandNotification値とともに使用されると、最終的にSqlDependencyクラスを使用してSQL Server 2005サーバにクエリー通知を登録します.なお、SqlDependency属性のCommandNotification値はASPのみである.NETページで有効です.コントロールは、テーブルベースのポーリングのみを@OutputCacheコマンドに使用できます.
VaryByControl
このプロパティは、セミコロンで区切られた文字列リストを使用して、ユーザーコントロールの出力キャッシュを変更します.これらの文字列は、ユーザコントロールで宣言するASPを表す.NETサーバコントロールのID属性値.既にVaryByParam属性が含まれていない限り、@OutputCache命令ではこの属性が必要です.
VaryByCustom
出力キャッシュ要件をカスタマイズするための任意のテキスト.このプロパティ値がbrowserである場合、キャッシュはブラウザ名とプライマリ・バージョン情報によって異なります.カスタム文字列を入力場合は、アプリケーションのGlobalでなければなりません.asaxファイルにHttpApplicationを書き換える.GetVaryByCustomStringメソッド.
VaryByHeader
この属性には、出力キャッシュを変更するためにセミコロンで区切られたHTTPヘッダのリストが含まれています.このプロパティをマルチヘッダに設定すると、指定したヘッダごとに出力キャッシュに要求ドキュメントの異なるバージョンが含まれます.VaryByHeaderプロパティは、ASPに限らず、すべてのHTTP 1.1キャッシュでキャッシュアイテムを有効にする.NETキャッシュ.この属性は、ユーザーコントロールの@OutputCacheコマンドではサポートされていません.
VaryByParam
このプロパティは、出力キャッシュを変更するためにセミコロンで区切られた文字列のリストを定義します.デフォルトでは、これらの文字列は、GETメソッド属性で送信されたクエリー文字列値またはPOSTメソッドで送信されたパラメータに対応します.このプロパティをマルチパラメータに設定すると、指定したパラメータごとに出力キャッシュに要求ドキュメントの異なるバージョンが含まれます.可能な値には、「none」、「*」、および有効なクエリー文字列またはPOSTパラメータ名が含まれます.なお、出力キャッシュASP.NETページの場合、この属性は必須です.ユーザーコントロールの@OutputCacheコマンドにVaryByControlプロパティが含まれていない限り、ユーザーコントロールにも必要です.含まれていない場合は、アナライザエラーが発生します.指定したパラメータに従ってキャッシュ内容を変更する必要がない場合は、この値を「none」に設定します.すべてのパラメータ値に応じて出力キャッシュを変更する場合は、プロパティを*に設定します.
@OutputCacheコマンドを使用する2つのコードの例を次に示します.
@OutputCacheを使用したサンプルコード1
<%@ OutputCache Duration="100" VaryByParam="none"%>
以上の例は、ページ出力キャッシュの有効期間が100秒であり、GETパラメータまたはPOSTパラメータに従ってページが変化しないことを示す@OutputCache命令の基本的な適用である.ページがキャッシュされている間に受信したリクエストは、キャッシュデータによってサービスを提供します.100秒経過すると、ページデータがキャッシュから削除され、次のリクエストが明示的に処理され、ページが再キャッシュされます.
@OutputCacheを使用したサンプルコード2
<%@ OutputCache Duration="100" VaryByParam="location;firstname" %>

以上の@OutputCache命令でページ出力キャッシュの有効期間を100秒に設定し、クエリ文字列パラメータlocationまたはfirstnameに基づいて出力キャッシュを設定します.たとえば、クライアント要求が「http://localhost/default.aspx?location=beijing」を選択すると、ページはキャッシュとして処理されます.
静的ページのすべての内容はサーバメモリに保存されます.リクエストがある場合、キャッシュ内の関連データは、キャッシュデータが期限切れになるまで直接出力されます.このプロセスでは、キャッシュはページ処理のライフサイクルを再び通過する必要はありません.これにより、リクエスト応答時間を短縮し、アプリケーションのパフォーマンスを向上させることができます.ページ出力キャッシュは、生成されたページをコンパイルするのに頻繁にデータを更新する必要がなく、生成されたページをコンパイルするのに多くの時間とリソースを費やすのに適していることは明らかです.データが頻繁に更新されるページには適用されません.デフォルトでは、ASP.NET 2.0はページ出力キャッシュ機能を有効にしているが、応答の出力はキャッシュされていない.開発者は、一部のページの応答がキャッシュの一部になるように設定する必要があります.ページ出力キャッシュを設定するには、@OutputCacheコマンドを使用するか、ページ出力キャッシュAPIを使用するかの2つの方法があります.@OutputCache指令はかつてASP.NET 1.xに出現し、ASP.NET 2.0では継承と強化が得られた.ページ出力キャッシュAPIは、主にHttpCachePolicyクラスを指す.