Как проверить политики кеширования внутри System.Runtime.Caching.ObjectCache?

Я использую новое пространство имен .NET 4.0 Caching: 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 я должен использовать полностью заблокированный синглтон?

13
задан abatishchev 14 October 2016 в 20:12
поделиться