I've got a simple object being cached like this:
_myCache.Add(someKey, someObj, policy);
Where _myCache
is declared as ObjectCache
(but injected via DI as MemoryCache.Default
), someObj
is the object i'm adding, and policy
is a CacheItemPolicy
.
If i have a CacheItemPolicy
like this:
var policy = new CacheItemPolicy
{
Priority = CacheItemPriority.Default,
SlidingExpiration = TimeSpan.FromHours(1)
};
It means it will expire in 1 hour. Cool.
But what will happen is that unlucky first user after the hour will have to wait for the hit.
Is there any way i can hook into an "expired" event/delegate and manually refresh the cache?
I see there is a mention of CacheEntryChangeMonitor
but can't find any meaninful doco/examples on how to utilize it in my example.
PS. I know i can use CacheItemPriority.NotRemovable
and expire it manually, but i can't do that in my current example because the cached data is a bit too complicated (e.g i would need to "invalidate" in like 10 different places in my code).
Any ideas?