41

ASP.NET Web API OData サービスで使用できる、ほとんどが静的な (1 日に 1 回変更される可能性がある) オブジェクトのコレクションをキャッシュする必要があります。この結果セットは複数の呼び出しで使用されるため (クライアント呼び出し固有ではないことを意味します)、アプリケーション レベルでキャッシュする必要があります。

「Web API のキャッシング」についていろいろ検索しましたが、結果はすべて「出力キャッシング」に関するものでした。それは私がここで探しているものではありません。「People」コレクションをキャッシュして、後続の呼び出しで再利用したい (有効期限がスライドする可能性がある)。

私の質問は、これはまだ ASP.NET にすぎないため、このコレクションをメモリに永続化するために従来のアプリケーション キャッシュ手法を使用する必要があるか、それとも他に何かする必要があるかということです。このコレクションはユーザーに直接返されるのではなく、API 呼び出しを介して OData クエリのバックグラウンドでソースとして使用されます。すべての呼び出しでまったく同じ情報を取得するために、すべての呼び出しでデータベースにアクセスする必要はありません。1 時間ごとに期限切れにするだけで十分です。

このシナリオでデータを適切にキャッシュする方法を知っている人はいますか?

4

2 に答える 2

27

はい、出力キャッシュはあなたが探しているものではありません。たとえば、http://msdn.microsoft.com/en-us/library/system.runtime.caching.memorycache.aspxのように、MemoryCache を使用してデータをメモリにキャッシュできます。ただし、アプリケーション プールがリサイクルされると、そのデータは失われます。もう 1 つのオプションは、AppFabric キャッシュや MemCache などの分散キャッシュを使用することです。

于 2013-05-08T17:04:54.670 に答える