У меня есть простой объект, который кэшируется следующим образом:
_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
, но не может найти каких-либо средних версий doco/примеров того, как использовать его в моем примере.
PS. Я знаю, что могу использовать CacheItemPriority.NotRemovable
и истекать его вручную, но я не могу этого сделать в моем текущем примере, потому что кэшированные данные немного сложны (например, мне нужно будет "аннулировать" как 10 разных мест в моем коде).
Любые идеи?