为什么 CONNECT 流量不会填充 Squid 的对象缓存
解释普通 HTTPS 隧道为何能传输大量字节,却无法给正向代理提供可复用的 HTTP 响应对象。
普通CONNECT 隧道交给 Squid 的是加密字节,而非可缓存的网站响应。因此,大型 HTTPS 下载可以产生大量流量,却不新增可复用的对象缓存条目。
Squid 可以记录隧道目标、时长和字节数。但它不会以可存储、复用的普通 HTTP 报文形式,收到内部 URL 路径、缓存指令、表示内容及验证器。增加磁盘空间或提高对象大小限制,都无法让这些信息显现。
在断定缓存损坏前,应检查请求方法和隧道记录。以 CONNECT 为主的负载出现大量传输、很少对象复用是符合预期的。实际检查缓存时,使用自己控制、带明确缓存头且内容已知的 HTTP 资源;确认测试的是 Squid 对象处理路径,而非隧道、浏览器缓存或目标 CDN。
客户端到代理的 TLS 是另一层。Squid 终止自身监听端的 TLS 后,可以处理普通 HTTP 目标请求。如果该连接改为请求 CONNECT 到 HTTPS,目标的内层 TLS 仍然独立且不透明。
HTTPS 拦截会改变证书信任、授权和隐私要求。它并非常规缓存空间调整,普通正向代理运行也不需要拦截。