【问题标题】:How does ASP.NET decide when to remove items from the cache?ASP.NET 如何决定何时从缓存中删除项目?
【发布时间】:2012-06-04 11:47:49
【问题描述】:

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

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

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

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

TIA G

【问题讨论】:

    标签: asp.net caching


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 谢谢 - 那么我正在寻找的是关于清除及其底层算法的更具体的信息,如果有的话。这为我提供了查找更多详细信息所需的搜索词。 :)
    猜你喜欢
    • 2010-10-16
    • 2010-11-08
    • 1970-01-01
    • 2010-11-28
    • 2010-10-17
    • 1970-01-01
    • 2018-07-01
    • 1970-01-01
    相关资源
    最近更新 更多