Squid重启后老数据无法进入内存缓存
在实际使用中遇到一个问题。将一个运行中的Squid用 squid -k shutdown 关掉
再用 squid -s 重启
这时再看Squid的access log,发现原来缓存在里面的文件全都只是TCP_HIT,无论如何频繁访问都无法加载到内存中变成TCP_MEM_HIT 。
而如果是原来没有缓存的文件,新访问,第一次MISS后,第二次是会TCP_MEM_HIT内存命中的。
置换策略使用的是默认的LRU,不太清楚具体文件在内存和磁盘间交换的内部机制是什么?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
好吧,自己好像找到答案了。
见此:http://www.squid-cache.org/mail-archi...
所以Squid只会把从后端取到的数据加入到内存,如果重启后,数据是从磁盘加载进来的,就不会再放到磁盘。但是这些数据并不会永远在磁盘上。当你设定的缓存时间到期后,这个数据会重新从后端取。这时候就有机会加入到内存中了。所以即使你的数据是静态的,最好也在http返回里加一个过期的头。否则重启后内存缓存就没有了。并且再也没有机会加载到内存缓存中。只能利用文件系统的cache层了。