【问题标题】:absolute expiration cache object - can it be manually removed?绝对过期缓存对象 - 可以手动删除吗?
【发布时间】:2010-04-23 00:54:16
【问题描述】:

在过去的几个小时里一直在为此烦恼。

我有一个缓存对象..

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

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

HttpRuntime.Cache.Remove("Members");

它的值不会改变,直到 1 小时结束或当我重置服务器时。

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

我希望这个对象持续一个小时,但取决于程序执行能够清除它,因此它将包含新数据。

非常感谢任何帮助

真正的吉利

【问题讨论】:

    标签: c# caching


    【解决方案1】:

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

    什么时候真正刷新项目 缓存?

    大多数缓存框架只会 从缓存中删除过期项目 当系统资源稀缺或 当缓存被引用时。这个 意味着一个缓存条目具有 由于绝对或滑动而过期 过期不能从 缓存到未来的某个时间,这可能 实际上在进入后会很好 过期了。

    这样做是为了提高性能。这 缓存框架通常使用 寻找的清除算法 过期条目并将其删除。这个 通常在缓存被调用时调用 引用而不是当项目 实际上过期了。这允许缓存 框架以避免不得不 不断跟踪基于时间的事件 知道何时从 缓存。

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

    【讨论】:

      【解决方案2】:

      Remove 方法应该可以正常工作。

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

      【讨论】:

      • 感谢您的回复,我仍然有这个问题。可能是这样.. 1 - 我试图从我的站点 admin.mysite.co.uk 的子域中清除缓存,2 我使用 LINQ 数据上下文而不是直接数据库查询?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-16
      • 2013-06-04
      • 1970-01-01
      • 2020-09-27
      相关资源
      最近更新 更多