Squid重启后老数据无法进入内存缓存

发布于 2022-08-23 23:45:58 字数 263 浏览 11 评论 0

在实际使用中遇到一个问题。将一个运行中的Squid用 squid -k shutdown 关掉
再用 squid -s 重启

这时再看Squid的access log,发现原来缓存在里面的文件全都只是TCP_HIT,无论如何频繁访问都无法加载到内存中变成TCP_MEM_HIT 。
而如果是原来没有缓存的文件,新访问,第一次MISS后,第二次是会TCP_MEM_HIT内存命中的。

置换策略使用的是默认的LRU,不太清楚具体文件在内存和磁盘间交换的内部机制是什么?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

沫雨熙 2022-08-30 23:45:58

好吧,自己好像找到答案了。

This is due to how the cache_mem cache works.. it only stores objects retrieved from the network. For objects stored in the disk cache Squid relies upon the OS filesystem caching for performance.

见此:http://www.squid-cache.org/mail-archi...

所以Squid只会把从后端取到的数据加入到内存,如果重启后,数据是从磁盘加载进来的,就不会再放到磁盘。但是这些数据并不会永远在磁盘上。当你设定的缓存时间到期后,这个数据会重新从后端取。这时候就有机会加入到内存中了。所以即使你的数据是静态的,最好也在http返回里加一个过期的头。否则重启后内存缓存就没有了。并且再也没有机会加载到内存缓存中。只能利用文件系统的cache层了。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文