ASP.NET如何决定何时从缓存中删除项目?

时间:2012-06-04 11:47:49

标签: asp.net caching

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

当项目存储在ASP.NET缓存中时,是否有一些已知的算法用于确定何时删除该项目?

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

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

TIA ģ

1 个答案:

答案 0 :(得分:2)

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

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

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

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