У меня есть простой объект, который кэшируется следующим образом:
_myCache.Add(someKey, someObj, policy);
Где _myCache
объявлено как ObjectCache
(но введено через DI как MemoryCache.Default
), someObj
- этообъект, который я добавляю, и policy
- это CacheItemPolicy
.
Если у меня есть CacheItemPolicy
, подобный этому:
var policy = new CacheItemPolicy
{
Priority = CacheItemPriority.Default,
SlidingExpiration = TimeSpan.FromHours(1)
};
Это означает, что срок его действия истекает через 1 час.Круто.
Но что случится, так это то, что незадачливому первому пользователю через час придется ждать попадания.
Есть ли способ, которым я могу подключиться к "просроченному" событию / делегату иобновить кеш вручную?
Я вижу, что есть упоминание CacheEntryChangeMonitor
, но не могу найти никаких значимых документов / примеров того, как его использовать в моем примере.
PS.Я знаю, что могу использовать CacheItemPriority.NotRemovable
и истечь его вручную, но я не могу этого сделать в моем текущем примере, потому что кэшированные данные слишком сложны (например, мне нужно «сделать недействительными» примерно в 10 разных местах в моем коде).
Есть идеи?