次のように単純なオブジェクトがキャッシュされています。
_myCache.Add(someKey, someObj, policy);
_myCache
として宣言されている場所ObjectCache
(ただし、DI as を介して注入されているMemoryCache.Default
)someObj
は、追加しているオブジェクトでpolicy
あり、CacheItemPolicy
.
私がCacheItemPolicy
このようなものを持っている場合:
var policy = new CacheItemPolicy
{
Priority = CacheItemPriority.Default,
SlidingExpiration = TimeSpan.FromHours(1)
};
つまり、1 時間で有効期限が切れます。涼しい。
しかし、何が起こるかというと、1 時間後に不運な最初のユーザーがヒットを待たなければならないということです。
「期限切れの」イベント/デリゲートにフックして、キャッシュを手動で更新する方法はありますか?
の言及がありCacheEntryChangeMonitor
ますが、私の例でそれを利用する方法について意味のあるドコ/例が見つかりません。
PS。手動で使用CacheItemPriority.NotRemovable
して期限切れにすることができることはわかっていますが、キャッシュされたデータが少し複雑すぎるため、現在の例ではそれを行うことができません (たとえば、コード内の 10 の異なる場所で「無効化」する必要があります)。
何か案は?