_cache.Insert(cacheKey, userList, null,
Cache.NoAbsoluteExpiration,
new TimeSpan(0, 15, 0),
CacheItemPriority.High, null);
我上面的代码似乎没有在 3 分钟后过期缓存,userList 对象从更新的数据库中提取数据,但缓存在 15 分钟后不会过期。
怎么了?
您正在使用明确将缓存设置为永不过期Cache.NoAbsoluteExpiration
。您想Cache.NoSlidingExpiration
改用:
使用时,此字段将
slidingExpiration
参数 设置为TimeSpan.Zero
具有恒定值零的字段。缓存项根据与or方法调用absoluteExpiration
关联的参数过期。Insert
Add
您将 15 分钟传递给滑动到期参数:http: //msdn.microsoft.com/en-us/library/05kd8d77.aspx
上次访问插入对象的时间与该对象过期的时间之间的时间间隔。如果此值等于 20 分钟,则对象将在上次访问后 20 分钟过期并从缓存中删除。如果使用滑动过期,absoluteExpiration 参数必须为 NoAbsoluteExpiration。
如果您的缓存对象的访问频率高于每 15 分钟一次,则它永远不会过期。
_cache.Insert(
cacheKey,
userList,
null,
new TimeSpan(0, 15, 0),
Cache.NoSlidingExpiration,
CacheItemPriority.High,
null);
现在该项目将在 15 分钟后过期