1

编辑:这不是关于如何以编程方式设置到期的问题。我完全精通绝对、滑动和依赖过期。

当一个项目存储在 ASP.NET 缓存中时,ASP.NET 是否使用某种已知算法来确定何时删除该项目?

我的意思不是它是否已失效(例如通过使用 SqlCacheDependency 通知),而是某些元素被加载和缓存,然后在数小时或数天内没有被触摸/读取......甚至几分钟但在服务器上高速缓存的需求不断增加...是否有一些关于 IIS 或 ASP.NET 如何决定何时清除空闲数据的已发布信息?

我问是因为我的老板认为也许我们可以超越 IIS,并强制每晚将数据预加载到我们认为可能需要的缓存中。我认为这是徒劳的努力,可能会使我们与应用程序的真正需求竞争——所以我正在寻找一些可以验证或反驳我的想法的硬材料。

蒂亚克

4

1 回答 1

2

必须不时清理缓存,以确保有地方存储新项目。当项目的有效时间到期或依赖关系发生变化时,也可以从缓存中删除数据。依赖关系可以是例如数据库 - 然后当数据库中有一些更改时,依赖于该数据库的项目将从缓存中删除。

有两种机制可以清除缓存中存储的数据:

清理 - 当缓存中没有足够的可用空间时,ASP.NET 会查找最近未使用的项目和优先级较低的项目。然后它删除选定的项目并将新项目存储在缓存中。

过期 - 有效时间已过的数据也将被删除。过期时间可以是绝对的 - 当数据在特定时间段内有效时,当时间总是从最后一次使用开始计算时,它们也可以称为“滑动”

于 2012-06-04T11:57:41.563 回答