次の方法で共有


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

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

.NET Framework には、ASP.NET を含む Windows クライアント アプリケーションとサーバー アプリケーションの両方のパフォーマンスとスケーラビリティを向上させるために使用できるキャッシュ機能が用意されています。

.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 ファイルの設定を使用して構成することもできます。 詳細については、「 キャッシュ用の outputCache 要素 (ASP.NET 設定スキーマ)」を参照してください。

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

WCF REST サービスでのキャッシュ

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

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

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

.NET Framework でのキャッシュは拡張可能に設計されています。 ObjectCache クラスを使用すると、カスタム キャッシュ実装を作成できます。 このクラスは、Windows フォーム、Windows Presentation Foundation (WPF)、Windows Communications Foundation (WCF) など、すべてのマネージド アプリケーションで使用できるメンバーを提供します。 これを行うには、別のストレージ メカニズムを使用するキャッシュ クラスを作成するか、キャッシュ操作をきめ細かく制御する必要があります。

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

詳細については、Scott Guthrie のブログの 「ASP.NET 4 (VS 2010 および .NET Framework 4.0 シリーズ) を使用した拡張出力キャッシュ」 のエントリを参照してください。

こちらも参照ください