_cache.Insert(cacheKey, userList, null,
Cache.NoAbsoluteExpiration,
new TimeSpan(0, 15, 0),
CacheItemPriority.High, null);
我上面的代码似乎没有在3分钟后过期缓存,userList对象从数据库中提取数据并更新,但缓存在15分钟后不会过期。下面的缓存项目会在15分钟后过期吗?
出了什么问题?
_cache.Insert(cacheKey, userList, null,
Cache.NoAbsoluteExpiration,
new TimeSpan(0, 15, 0),
CacheItemPriority.High, null);
我上面的代码似乎没有在3分钟后过期缓存,userList对象从数据库中提取数据并更新,但缓存在15分钟后不会过期。下面的缓存项目会在15分钟后过期吗?
出了什么问题?
您正在通过使用Cache.NoAbsoluteExpiration
明确地将缓存设置为永不过期。你想用Cache.NoSlidingExpiration
代替:
使用时,此字段设置
slidingExpiration
参数到TimeSpan.Zero
领域,它具有零恒定值。缓存的 项目将根据与Insert
或Add
方法调用相关联的absoluteExpiration
参数 到期。
你传入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分钟内
调用插入时
到期了,我发现这混乱的B/C的方法调用的签名要你同时插入绝对和滑动倍。它不是一个或另一个? – loyalflow
我认为,如果页面的缓存值更长,页面的缓存可能会影响控件缓存,这可能是相关的。 – MisterIsaak