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

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

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

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

最佳答案

您描述的算法用于确定当缓存已满时何时从缓存中删除项目。但是,ASP.NET 缓存没有固定容量 - 它位于堆上,因此它的大小不受限制。

缓存内部有一个计时器,它以固定的频率计时。在每次滴答时,它都会查找过期的项目并将其删除。如果一个项目有滑动过期,那么每次缓存获取都会增加它的生命周期,否则它会被删除。

更新:

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

所以我想我错了:)

关于asp.net - ASP.Net 使用什么缓存算法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14598025/

相关文章:

python - 选择优化最小数量的元素以跨越一个区域

python - 与正则表达式匹配的字符串的最小长度

c# - 在 c# asp.net 中编码和解码?

c# - AcquireTokenByAuthorizationCode 使用 Azure Active Directory 在使用 ASP.NET MVC 的单租户应用程序中引发新异常

.net - 如何防止 Visual Studio Windows 窗体设计器删除控件?

c# - 如何隐藏控制台窗口?

c# - C# 中不兼容的匿名函数签名?

algorithm - 返回错误输出的最大和子数组

c# - 无法从文本框获取更新值

ASP.NET MVC 从 aspx View 引擎迁移到 razor View 引擎