У меня есть простой объект, кэшируемый следующим образом:
_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 различных местах в моем коде).
Есть идеи?