我有一个像这样缓存的简单对象:
_myCache.Add(someKey, someObj, policy);
Where_myCache
被声明为ObjectCache
(但通过 DI 注入为MemoryCache.Default
),someObj
是我要添加的对象,并且policy
是CacheItemPolicy
.
如果我有CacheItemPolicy
这样的:
var policy = new CacheItemPolicy
{
Priority = CacheItemPriority.Default,
SlidingExpiration = TimeSpan.FromHours(1)
};
这意味着它将在1小时内到期。凉爽的。
但是将会发生的情况是,不幸的第一个用户在一小时后将不得不等待命中。
有什么办法可以挂钩“过期”事件/委托并手动刷新缓存?
我看到CacheEntryChangeMonitor
在我的示例中提到了如何使用它,但找不到任何有意义的文档/示例。
PS。我知道我可以CacheItemPriority.NotRemovable
手动使用和过期它,但在我当前的示例中我不能这样做,因为缓存的数据有点太复杂了(例如,我需要在我的代码中的 10 个不同位置“无效”)。
有任何想法吗?