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