【发布时间】:2011-12-01 04:24:46
【问题描述】:
我有一个像这样缓存的简单对象:
_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,但在我的示例中找不到任何有意义的文档/示例来说明如何使用它。
PS。我知道我可以使用CacheItemPriority.NotRemovable 并手动将其过期,但在我当前的示例中我不能这样做,因为缓存的数据有点太复杂了(例如,我需要在我的代码中的 10 个不同位置“无效” )。
有什么想法吗?
【问题讨论】:
-
顺便说一句,不需要设置Priority = CacheItemPriority.Default,因为这个默认值是默认设置的:)
标签: c# caching .net-4.0 objectcache