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