ASP.Net使用什么缓存算法?

时间:2013-01-30 06:34:26

标签: asp.net .net algorithm caching asp.net-caching

我正在编写ASP.Net缓存的包装器,我很好奇他们使用的缓存算法。例如,假设缓存中的所有内容都具有相同的到期日期和优先级,它如何清除项目?

Wikipedia列出了11种不同的缓存算法。 ASP.Net使用其中之一吗?

1 个答案:

答案 0 :(得分:3)

您描述的算法用于确定何时从缓存中删除项目的时间。但是,ASP.NET缓存没有设置容量 - 它存在于堆上,因此它的大小是未绑定的。

在缓存内部,缓存有一个以常规频率打勾的计时器。在每个刻度线上,它会查找过期的项目并将其删除。如果某个项目有一个滑动过期,则每个cache-get都会增加其生命周期,否则会被删除。

更新:

我已经完成了Cache类,实际上有一些逻辑可以在“内存压力”过高时删除一定比例的最少使用的项目。如果您转到System.Web.UI.Caching.CacheMemoryStats.GetPercentToTrim()CacheCommon.CacheManagerThread(Int32),您可以在Reflector中看到此信息。 UsageBucket类中有一些相当复杂的逻辑,我现在无法理解,但如果方法的名称是任何东西,它似乎不是任何特殊的异域缓存算法,而是基于某些东西在最不常用的算法上。

所以我猜我错了:)