_cache.Insert(cacheKey, userList, null,
Cache.NoAbsoluteExpiration,
new TimeSpan(0, 15, 0),
CacheItemPriority.High, null);
上面的代码在3分钟后似乎没有使缓存过期,userList对象从已更新的数据库中提取数据,但缓存在15分钟后不会过期。
有什么问题?
答案 0 :(得分:5)
您使用Cache.NoAbsoluteExpiration
明确将缓存设置为永不过期。您想要使用Cache.NoSlidingExpiration
代替:
使用时,此字段将
slidingExpiration
参数设置为TimeSpan.Zero
字段,其常量值为零。缓存 item根据absoluteExpiration
参数到期 与Insert
或Add
方法调用相关联。
答案 1 :(得分:3)
您将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分钟后过期