Я использую новое пространство имен кэширования .NET 4.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" предоставит информацию, требуемую мне (истечение срока действия, зависимости и т.д.), по крайней мере, как "getters" ).
Но это не так. Все, что у него есть, это свойства для имени ключа, значения и имени области.
Как я могу проверить элементы в кеше и выплюнуть требуемую информацию?
Нет ли пространства имен/класса?
ИЗМЕНИТЬ
Похоже, есть класс ChangeMonitor, но опять же - это не дает информации об истечении срока, оно просто позволяет вам подписываться на события, когда элементы кэша удаляются.
Должен быть способ просто захватить элементы в кеше и когда они истекают.
РЕДАКТИРОВАТЬ 2
Не знаю, должен ли это быть отдельный вопрос, но также - я запутался в отношении того, какое время жизни я должен предоставить ObjectCache. MSDN говорит, что это не синглтон, и вы можете фактически создать несколько экземпляров ObjectCache. Что это значит, я должен использовать полностью заблокированный синглтон при доступе к экземпляру ObjectCache?