Squid 何时可以缓存 APT 软件包
在期望软件包请求变成 Squid 命中之前,请检查 HTTP 传输、缓存存储、对象大小以及 APT 的 cache-control 设置。
APT 和 aptitude 可以通过 HTTP 获取仓库文件。Squid 可以缓存符合条件的 HTTP 响应;客户端不必是网页浏览器。
在 Squid 6 或 7 部署中,如果每次软件包传输仍然到达源站,请检查以下输入:
- 下载使用 HTTP,或者 Squid 能以其他方式访问 HTTP 交换。 仅有一条 HTTPS CONNECT 隧道不会让软件包响应进入缓存。
- 缓存配置了合适的存储。转发成功并不证明存在磁盘缓存。
- 归档文件符合相应缓存目录的最大对象大小。较小的元数据和较大的 .deb 可能得到不同结果。
- 请求和响应在其 cache-control 策略下允许存储和复用。
APT 提供 Acquire::http::No-Cache、Max-Age 和 No-Store。No-Store 可以阻止所请求的归档文件被存储。No-Cache 要求在复用已存储的响应之前重新验证。请同时检查生效的 APT 配置和 Squid 的策略。
比较同一个完整 URL,并在 access.log 中检查缓存结果。 不同的镜像主机、变更的仓库路径或本地已缓存的软件包可能意味着两次安装从不请求同一个网络对象。
仓库镜像会有意维护仓库内容,而不是只依赖按需的 HTTP 缓存复用。