代码之家  ›  专栏  ›  技术社区  ›  JGilmartin

绝对过期缓存对象-是否可以手动删除?

  •  2
  • JGilmartin  · 技术社区  · 16 年前

    在过去的几个小时里,我一直在为这件事操心。

    我有一个缓存对象..

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

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

    HttpRuntime.Cache.Remove("Members");
    

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

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

    我希望这个对象能持续一个小时,但根据程序的执行情况,可以清除它,这样它将包含新的数据。

    非常感谢您的帮助

    特鲁吉利

    2 回复  |  直到 16 年前
        1
  •  1
  •   LukeH    16 年前

    这个 Remove 这个方法应该行得通。

    你确定你在打电话 去除 正确,并且没有其他代码将项重新插入到缓存中?

        2
  •  1
  •   GalacticCowboy    16 年前

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

    项目实际从何时刷新 缓存?

    大多数缓存框架只会 从缓存中删除过期项 当系统资源稀缺或 当缓存被引用时。这个 意味着 由于绝对或滑动而过期 过期不能从 缓存到将来某个时间 实际上是在进入之后 期满。

    这是为了表演。这个 缓存框架通常使用 查找的清除算法 过期条目并将其删除。这个 通常在缓存为 引用而不是当项目 实际上已经过期了。这允许缓存 避免框架 持续跟踪基于时间的事件 知道何时从 隐藏物。

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