Net*_*ter 5 google-chrome cache
现在,我们有一个简单的最近最少使用算法,一旦超过一定限制,它就会开始删除旧条目,而第二种算法在驱逐条目之前会考虑重用和年龄。
然而,当我在 Chrome 中测试具有重复请求的网站时,我注意到当缓存已满时,5 MB 的大文件会不断地从缓存中逐出,而较小的文件会保留缓存。
关于缓存驱逐的文档是否错误,或者该行为还有其他解释吗?
解释很简单:Chrome(ium) 不使用“简单的最近最少使用算法”。
检查 Chromium 源文件 MemoryCache.cpp 会在其最后发现这行代码,其中包含打印出缓存的调试例程:
printf("LRU-SP lists in eviction order (Kilobytes decoded, Kilobytes encoded, Access count, Referenced, isPurgeable, wasPurged):\n");
Run Code Online (Sandbox Code Playgroud)
LRU-SP 算法首次在论文 《LRU-SP:用于 Web 缓存的大小调整和流行度感知的 LRU 替换算法》中进行了描述,该论文在第二十四届年度国际计算机软件和应用程序会议上发表。
各种流行的网络浏览器使用哪些缓存替换策略?文章中给出了该算法的描述。 ,由 Felix Gessert 贡献:
LRU-SP 扩展了经典的最近最少使用 (LRU) 算法,以考虑不同的对象大小 (1)。不考虑不同的延迟 (2)。LRU-FP是PSS(金字塔选择方案)的扩展。LRU-SP算法的工作原理如下:
- 每个对象 x 被分配给一个类:
每个类维护一个单独的LRU列表
每次请求缓存对象时,它可能会根据上面的公式更改类
当需要替换对象时,算法会查找每个 LRU 列表中最近最少使用(即最旧)的对象,并选择具有最小的对象 x
R 是对缓存对象的请求数,因为它是上次获取的
(1)重振缓存
我猜想,在您的情况下,公式“大小/访问次数”给出了一个很大的值,因为这是一个仅访问一次的大文件,因此这个 5 MB 的文件是第一个被驱逐的候选者。
归档时间: |
|
查看次数: |
1025 次 |
最近记录: |