アプリケーション データのキャッシュ
ASP.NET には、作成するときに大量のサーバー リソースを必要とするオブジェクトをメモリ内に格納できるようにするための強力で使いやすいキャッシュ機構が用意されています。このようなリソースをキャッシュすることにより、アプリケーションのパフォーマンスを大幅に向上させることができます。
キャッシュは、Cache クラスによって実装されます。キャッシュ インスタンスは、各アプリケーションに対してプライベートです。キャッシュの有効期間は、アプリケーションの有効期間と結び付けられ、アプリケーションが再起動すると、Cache オブジェクトも再起動します。
Cache クラスは、使いやすさを重視してデザインされています。Cache にアイテムを配置し、後で、簡単なキーと値のペアを使用してこのアイテムを取得できます。その方法の例については、「方法 : キャッシュにアイテムを追加する」と「方法 : キャッシュされたアイテムから値を取得する」を参照してください。
Cache クラスは、アイテムがキャッシュされる方法とキャッシュされる期間をカスタマイズできる強力な機能を提供します。たとえば、システム メモリが不足してくると、キャッシュは自動的に、あまり使用しない優先度の低いアイテムを削除して、メモリを解放します。この方法は清掃と呼ばれ、期限切れのデータが貴重なサーバー リソースを消費しないように、キャッシュが行う方法の 1 つです。
Cache が清掃を行うときには、あるアイテムを他のアイテムよりも優先するように指定できます。アイテムの優先度を示すには、Add メソッドまたは Insert メソッドを使用して、CacheItemPriority 列挙値の 1 つを指定します。
Add メソッドまたは Insert メソッドを使用してアイテムをキャッシュに追加するときには、有効期限ポリシーも設定できます。アイテムの有効期限を定義するには、DateTime 値を使用して、アイテムが有効期限切れになる正確な時間 (絶対有効期限) を指定できます。また、TimeSpan 値を使用して、スライド式有効期限を指定することもできます。この方法では、アイテムが前回アクセスされた時間に基づいて、有効期限が切れるまでの経過時間を指定できます。有効期限が切れたアイテムは、キャッシュから削除されます。この値を取得しようとすると、そのアイテムが再びキャッシュに追加されない限り、null (Visual Basic の場合は Nothing) が返されます。
定期的にデータのリフレッシュが行われるアイテムや、指定した期間だけ有効なアイテムなどがキャッシュに格納される場合、通常は、これらの揮発性アイテムには有効期限ポリシーを設定して、それらのデータが現在のデータである間だけキャッシュに保持されるようにします。たとえば、別の Web サイトからデータを取得して、スポーツの得点経過を追跡するアプリケーションを作成する場合には、情報ソースの Web サイトでその試合の得点が変更されない限り、得点をキャッシュしておくことができます。この場合、有効期限ポリシーは、他の Web サイトで得点データが更新される間隔に基づいて設定できます。キャッシュに最新の得点データが保持されているかどうかを判断するためのコードを作成できます。得点データが最新でない場合は、そのコードによって情報ソースの Web サイトから得点データを読み取り、新しい値をキャッシュできます。
最後に、ASP.NET では、キャッシュされているアイテムの有効性を外部のファイルやディレクトリ (ファイルの依存関係)、またはキャッシュされているその他のアイテム (キーの依存関係) に基づいて定義できます。依存関係が関連付けられているアイテムが変更されると、キャッシュされているアイテムは無効になり、キャッシュから削除されます。この方法を使用すると、アイテムのデータ ソースが変更されたときに、それらのアイテムをキャッシュから削除できます。たとえば、XML ファイルの金融データを処理するアプリケーションを作成する場合には、その XML ファイルに対する依存関係を維持したまま、ファイルのデータをキャッシュに挿入できます。このファイルが更新されると、アイテムはキャッシュから削除され、アプリケーションは XML ファイルを再び読み込み、アイテムの更新されたデータをキャッシュに挿入します。
メモ : |
---|
Cache は、格納しているアイテムの内容に関する情報を持ちません。それらのオブジェクトに対する参照を保持するだけです。また、それらのアイテムの依存関係を追跡したり、有効期限ポリシーを設定したりするための手段も用意されています。 |
これらの機能の使用方法の詳細については、「方法 : キャッシュにアイテムを追加する」を参照してください。
参照
処理手順
方法 : キャッシュにアイテムを追加する
方法 : キャッシュされたアイテムから値を取得する
方法 : ASP.NET のキャッシュから項目を削除する
方法 : キャッシュから項目が削除されたときにアプリケーションに通知する