2012-06-04 44 views
1

编辑:这不是一个关于如何以编程方式设置到期的问题。我完全熟悉绝对,滑动和依赖关系到期。ASP.NET如何决定何时从缓存中删除项目?

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

我并不是说它是否被无效(例如通过使用SqlCacheDependency通知),而是某些元素被加载并缓存,然后在几小时或几天甚至几分钟内未被触及/读取但在缓存内存不断需求的服务器上......是否有一些关于IIS或ASP.NET如何决定什么时候空闲数据应该被清除的信息?

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

TIA 摹

回答

2

缓存,必须经常清洁的时间,以确保有存放新项目的地方。当项目有效期过期或依赖关系发生变化时,缓存中的数据也可以被删除。依赖关系可以是例如数据库 - 然后当数据库发生一些变化时,从该缓存中删除依赖于该数据库的项目。

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

清除 - 当没有缓存足够的自由空间ASP.NET查找还没有被最近使用的项目和低优先级的项目。然后它删除选定的项目并将新项目存储在缓存中。

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

+0

谢谢 - 那么我在寻找什么是关于清除的更具体的信息及其基础算法,如果有的话。这给了我需要查找更多细节的搜索条件。 :) –

+1

请参阅http://msdn.microsoft.com/en-us/library/ee817651.aspx –

相关问题