镜像轮换会改变 Squid 可复用的内容
解释为什么从不同镜像网址下载的相同 RPM 软件包会占据不同的 Squid 缓存条目。
两个客户端通过 Squid 下载同一个 RPM,但第二次传输仍然会到达某个镜像。比较完整的请求网址:
http://mirror-a.example.net/packages/tool-1.0.rpm
http://mirror-b.example.net/packages/tool-1.0.rpm
软件包的文件名相同;它们的目标 URI 不同。HTTP 缓存键至少包含请求方法和目标 URI,因此相同的软件包校验和不会自动合并这些条目。
Yum 和 DNF 可以使用固定的 baseurl,也可以通过 mirrorlist 和 metalink 发现镜像。因此相同的安装可能选择不同的下载网址。
只使用一个获批镜像,可以让可见请求拥有一致的缓存标识。请保持仓库路径、架构和软件套件对齐。固定镜像也会改变可用性和镜像选择行为,因此应把它作为仓库策略决策。
检查对象缓存是否可用
在普通的 HTTPS CONNECT 隧道内,Squid 无法看到 RPM 响应正文来进行 HTTP 缓存。共用的镜像主机名不会改变这一点。请让 HTTPS 仓库保持加密。
对于 Squid 能够缓存的响应,复用仍取决于新鲜度、请求与响应指令以及本地缓存策略。记录所选网址、该事务是可见 HTTP 还是加密隧道,以及它的缓存结果,以便解释未命中。