以下缓存项目将在15分钟后过期吗?

时间:2012-10-10 19:33:01

标签: c# asp.net caching

_cache.Insert(cacheKey, userList, null,
 Cache.NoAbsoluteExpiration,
 new TimeSpan(0, 15, 0),
 CacheItemPriority.High, null);

上面的代码在3分钟后似乎没有使缓存过期,userList对象从已更新的数据库中提取数据,但缓存在15分钟后不会过期。

有什么问题?

2 个答案:

答案 0 :(得分:5)

您使用Cache.NoAbsoluteExpiration明确将缓存设置为永不过期。您想要使用Cache.NoSlidingExpiration代替:

  

使用时,此字段将slidingExpiration参数设置为   TimeSpan.Zero字段,其常量值为零。缓存   item根据absoluteExpiration参数到期   与InsertAdd方法调用相关联。

答案 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分钟后过期