Squid 并不会保留它曾经缓存过的每一个对象。它的磁盘存储有配置好的容量,以及一套用于选择淘汰哪些缓存对象的替换策略。

在 Squid 7 的接口中,普通的 LRU 策略与默认磁盘水位这样表达:

cache_replacement_policy lru
cache_swap_low 90
cache_swap_high 95

水位是已配置交换空间的百分比。使用量高于低水位时开始替换。随着使用量接近高水位,淘汰会变得更加积极,目标是让缓存保持接近低水位。

LRU 按最近使用情况选择对象。容量由磁盘存储配置决定,其中包括相关的 cache_dir 条目;更改水位并不会创造额外的磁盘空间。

这就是缓存的正常生命周期:对象可以被移除,并在之后再次被请求时重新获取。没有必要仅仅因为缓存积累了很多文件就删除整个缓存。

继续监控文件系统本身。日志、元数据、临时文件和其他程序都可能占用缓存对象容量之外的空间。缓存替换管理的是 Squid 的存储,而不是共享该磁盘的每一个文件。

相关文章