次のように単純なオブジェクトがキャッシュされています。
_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 の異なる場所で「無効化」する必要があります)。
何か案は?