【问题标题】:Does cache absolute expiration guarantee that the cache is eliminated at the exact time?缓存绝对过期是否保证缓存在准确的时间被淘汰?
【发布时间】:2010-05-26 19:50:57
【问题描述】:

我正在使用 HttpRuntime 缓存来存储对象列表,在我们当前的项目中,指定对象应该缓存到午夜,所以我使用 DateTime.Today.AddHours(24) 来设置绝对过期时间日期到午夜。

例如,如果今天是 5 月 26 日,则绝对过期时间将设置为 5 月 27 日 0:00。

但是不知何故,当我更改计算机的时钟时,对象仍在缓存中。我应该稍等一下(CacheItemPriority 设置为 Normal)吗?我是不是忘记了什么?

谢谢

【问题讨论】:

  • 感谢您的回答,但我已经知道了。忘记清理,因为对于这种特殊情况,我将 CacheItemPriority 设置为 NotRemove。当缓存到期时,在这种情况下是在午夜,它会在午夜到期还是我应该期望它在一分钟后被删除?

标签: c# caching


【解决方案1】:

不保证缓存会在准确的时间过期。在某些情况下,例如系统内存不足会导致缓存过期。因此,不要假设您放入缓存中的内容稍后会出现 - 始终先检查。

【讨论】:

    【解决方案2】:

    ASP.NET 可以出于以下原因之一从缓存中删除数据:

    • 由于服务器内存不足, 一个称为清除的过程。

    • 因为缓存中的项目有
      过期了。

    • 因为项目的依赖性
      变化。

    • 为了帮助您管理缓存的项目,
      ASP.NET 可以通知您的
      删除项目时的应用程序 从缓存中。

    【讨论】:

      猜你喜欢
      • 2013-06-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-18
      • 1970-01-01
      • 2011-08-19
      • 2013-11-18
      相关资源
      最近更新 更多