加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

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

发布时间:2020-12-16 09:52:47 所属栏目:asp.Net 来源:网络整理
导读:我正在编写ASP.Net缓存的包装器,我很好奇他们使用的缓存算法.例如,假设缓存中的所有内容都具有相同的到期日期和优先级,它如何清除项目? Wikipedia列出了11种不同的缓存算法. ASP.Net使用其中之一吗? 解决方法 您描述的算法用于确定何时从缓存中删除项目的
我正在编写ASP.Net缓存的包装器,我很好奇他们使用的缓存算法.例如,假设缓存中的所有内容都具有相同的到期日期和优先级,它如何清除项目?

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

解决方法

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

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

更新:

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

所以我猜我错了:)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读