绝对到期缓存对象 - 可以手动删除吗?

时间:2010-04-22 16:40:11

标签: c# caching

在过去的几个小时里,我一直把头发拉过来。

我有一个缓存对象..

HttpRuntime.Cache.Insert("Members", AllMembersList, null, DateTime.Now.AddHours(1), TimeSpan.Zero);

当我尝试清除缓存对象时..

HttpRuntime.Cache.Remove("Members");

它的值不会改变,直到1小时为止或重置服务器时。

我的问题..对于设置绝对到期的缓存对象,我可以手动清除它还是整整一小时都存在?

我想要的是这个对象可以持续一个小时但是根据程序执行情况可以清除它以便它包含新数据。

非常感谢任何帮助

truegilly

2 个答案:

答案 0 :(得分:1)

Remove方法应该可以正常使用。

您确定正确调用Remove并且没有其他代码将该项目重新插入缓存吗?

答案 1 :(得分:1)

来自http://www.neovolve.com/page/Cache-Expiration-Policies.aspx

  

项目何时实际刷新   缓存?

     

大多数缓存框架都只会   从缓存中删除过期的项目   当系统资源稀缺或   何时引用缓存。这个   表示具有的缓存条目   由于绝对或滑动而过期   到期日可能无法从中删除   缓存,直到某个未来时间可能   实际上进入后很好   过期。

     

这是为了表现。该   缓存框架通常使用a   寻找的清理算法   过期的条目并删除它们。这个   通常在缓存时调用   引用而不是当项目   实际上到期了。这允许缓存   框架,以避免不得不   不断跟踪基于时间的事件   知道何时从中删除物品   高速缓存中。

您可以尝试将缓存值设置为null。