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

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

怎么了?

4

2 回答 2

5

您正在使用明确将缓存设置为永不过期Cache.NoAbsoluteExpiration。您想Cache.NoSlidingExpiration改用:

使用时,此字段将slidingExpiration参数 设置为TimeSpan.Zero具有恒定值零的字段。缓存项根据与or方法调用absoluteExpiration关联的参数过期。InsertAdd

于 2012-10-10T19:36:21.650 回答
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 分钟后过期

于 2012-10-10T19:38:13.407 回答