.NET Framework アプリケーションでのキャッシュ

キャッシュを使用するとメモリにデータを格納しておくことができるのですぐにアクセスできます。 データに再度アクセスするとき、アプリケーションは元のソースからデータを取得する代わりにキャッシュからデータを取得できます。 これにより、パフォーマンスとスケーラビリティが向上します。 さらにキャッシュを使用するとデータ ソースが一時的に使用できない場合もデータが使用可能になります。

.NET Framework のキャッシュ機能を使用すると、Windows のクライアント アプリケーションとサーバー アプリケーション (ASP.NET を含む) の両方のパフォーマンスとスケーラビリティが向上します。

メモメモ

.NET Framework 3.5 以前のバージョンでは、ASP.NET の System.Web.Caching 名前空間にメモリ内キャッシュの実装が含まれていました。以前のバージョンの .NET Framework では、System.Web 名前空間でしかキャッシュを使用できないため、ASP.NET クラスに対する依存関係が必要になります。.NET Framework 4 では、System.Runtime.Caching 名前空間に、Web アプリケーションでも Web アプリケーション以外でも使用できるように設計された API が用意されています。

キャッシュされたデータ

情報のキャッシュは、System.Runtime.Caching 名前空間のクラスを使用して行うことができます。 この名前空間のキャッシュ クラスには次の機能があります。

  • カスタム キャッシュ実装を作成する基盤となる抽象型

  • メモリ内オブジェクト キャッシュの具象実装

抽象基本キャッシュ クラス (ObjectCache) で、次のキャッシュ操作を定義します。

  • キャッシュ エントリの作成と管理

  • 有効期限と削除の情報の指定

  • キャッシュ エントリの変更に応答して発生するイベントのトリガー

MemoryCache クラスは、ObjectCache クラスのメモリ内オブジェクト キャッシュの実装です。 MemoryCache クラスを使用して、ほとんどのキャッシュ操作を実行できます。

メモメモ

MemoryCache クラスは、System.Web.Caching 名前空間で定義される ASP.NET キャッシュ オブジェクトを原型としています。そのため、内部キャッシュ ロジックは、以前のバージョンの ASP.NET のロジックに似ています。

WPF アプリケーションでキャッシュを使用する方法の例については、「チュートリアル: WPF アプリケーション内のアプリケーション データのキャッシュ」を参照してください。

ASP.NET アプリケーションにおけるキャッシュ

System.Runtime.Caching 名前空間のキャッシュ クラスには、ASP.NET でデータをキャッシュするための機能が用意されています。

メモメモ

.NET Framework 3.5 以前のバージョンを対象とするアプリケーションの場合は、System.Web.Caching 名前空間に定義されているキャッシュ クラスを使用する必要があります。詳細については、「ASP.NET のキャッシュの概要」を参照してください。

メモメモ

新しいアプリケーションを開発するときは、MemoryCache クラスを使用することをお勧めします。System.Runtime.Caching 名前空間の API は、Cache 名前空間の API に似ています。そのため、以前のバージョンの ASP.NET でキャッシュを使用したことがあれば、この API もすぐに理解できます。ASP.NET アプリケーションでキャッシュを使用する方法の例については、「チュートリアル: ASP.NET 内のアプリケーション データのキャッシュ」を参照してください。

出力のキャッシュ

アプリケーション データを手動でキャッシュするには、ASP.NET の MemoryCache クラスを使用します。 ASP.NET では、出力キャッシュもサポートされており、ページ、コントロール、および HTTP 応答の生成された出力をメモリに格納することができます。 出力キャッシュを構成するには、ASP.NET Web ページで宣言するか、Web.config ファイルの設定を使用します。 詳細については、「caching の outputCache 要素 (ASP.NET 設定スキーマ)」を参照してください。

ASP.NET では、カスタム出力キャッシュ プロバイダーを作成して出力キャッシュを拡張できます。 カスタム プロバイダーを使用することで、キャッシュされた内容を、ディスク、クラウド ストレージ、分散キャッシュ エンジンなどの他のストレージ デバイスに格納することができます。 カスタム出力キャッシュ プロバイダーを作成するには、OutputCacheProvider クラスから派生するクラスを作成し、そのカスタム出力キャッシュ プロバイダーを使用するようにアプリケーションを構成します。

WCF REST サービスにおけるキャッシュ

.NET Framework では、WCF REST サービスに、ASP.NET で提供されている宣言による出力キャッシュを利用できます。 このため、WCF REST サービス操作からの応答をキャッシュできます。 キャッシュ用に構成されているサービスに対してユーザーが HTTP GET 要求を送信すると、ASP.NET はキャッシュされた応答を送り返し、サービス メソッドは呼び出されません。 キャッシュの有効期限が切れると、次にユーザーが HTTP GET 要求を送信したときに、サービス メソッドが呼び出され、応答が再度キャッシュされます。

.NET Framework では、条件付き HTTP GET キャッシュを実装することもできます。 REST シナリオでは、条件付き HTTP GET 要求がサービスで使用されて、HTTP の仕様で説明されているように、インテリジェントな HTTP キャッシュが実装されることがよくあります。 詳細については、「WCF WEB HTTP サービスのキャッシュ サポート」を参照してください。

.NET Framework のキャッシュの拡張

.NET Framework のキャッシュは拡張できるように設計されています。 ObjectCache クラスを使用して、カスタム キャッシュ実装を作成することができます。 このクラスには、Windows フォーム、Windows Presentation Foundation (WPF)、Windows Communications Foundation (WCF) などのあらゆるマネージ アプリケーションで使用できるメンバーが用意されています。 キャッシュの拡張は、別のストレージ機構を使用するキャッシュ クラスを作成したり、キャッシュ操作を詳しく制御したりする場合に行います。

キャッシュを拡張するには、次の操作を行います。

詳細については、Scott Guthrie のブログの「Extensible Output Caching with ASP.NET 4 (VS 2010 and .NET 4.0 Series) (ASP.NET 4 の拡張性がある出力キャッシュ (VS 2010 および .NET 4.0 シリーズ))」を参照してください。

参照

参照

ObjectCache

MemoryCache

その他の技術情報

チュートリアル: WPF アプリケーション内のアプリケーション データのキャッシュ

チュートリアル: ASP.NET 内のアプリケーション データのキャッシュ