两个客户端通过 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 还是加密隧道,以及它的缓存结果,以便解释未命中。

相关文章