新しい.NET4.0キャッシング名前空間を利用しています:System.Runtime.Caching
。
現在、実際のアプリに最適なものを見つけるために、新しいAPIを試作品/いじっています。
これに沿って、基本的にキャッシュ内のすべて、特に次の情報をダンプするページ(ASP.NET MVC)を作成しようとしています。
- キャッシュキー
- キャッシュオブジェクト
- キャッシュポリシー(有効期限など)
- キャッシュの依存関係(ある場合)
ただし、キー/オブジェクト以外は取得できないようです。
これが私が現在遊んでいるコードです:
public ActionResult Index()
{
var cache = MemoryCache.Default;
// i can get the list of cache keys like this:
var cacheKeys = cache.Select(kvp => kvp.Key).ToList();
// i can also get a strongly-typed "CacheItem" like this:
CacheItem item = cache.GetCacheItem("someKey");
}
「CacheItem」クラスが必要な情報(有効期限、依存関係など-少なくとも「ゲッター」として)を公開することを望んでいました。
しかし、そうではありません。キー、値、リージョン名のプロパティだけがあります。
キャッシュ内のアイテムを調べて、必要な情報を吐き出すにはどうすればよいですか?
欠落している名前空間/クラスはありますか?
編集
ChangeMonitorクラスがあるように見えますが、これも有効期限情報を提供せず、キャッシュアイテムが削除されたときにイベントをサブスクライブできるようにするだけです。
キャッシュ内のアイテムを取得する方法と、それらが期限切れになったときに取得する方法が必要です。
編集2
これが別の質問であるかどうかはわかりませんが、ObjectCacheにどのような存続期間を与えるべきかについても混乱しています。MSDNによると、これはシングルトンではなく、実際には複数のObjectCacheインスタンスを作成できます。それはどういう意味ですか、ObjectCacheインスタンスにアクセスするときに完全にロックされたシングルトンを使用する必要がありますか?