curl -N 无法让代理停止缓冲
定位缓冲发生在客户端、中间层还是渲染端,不要假设 curl 的输出标志会改变整条响应路径。
curl -N 或 --no-buffer 会关闭 curl 的输出流缓冲。它有助于诊断延迟输出,但不会改变代理或服务器的缓冲策略。
curl --proxy http://proxy.example:8080 --noproxy '' --no-buffer --max-time 30 https://example.com/stream如需通过公共代理进行比较,请从 HTTP 代理列表中选择一个 HTTP 端点。使用你实际的流式 URL,并选择预期的限制。空的绕过列表会让这次比较保持在所选代理路由上。
到达、解码与显示
服务器可以逐步生成字节,中间层可以把它们收集起来,客户端库可以读取完整正文,浏览器也可以推迟渲染。在你能够控制路径的位置比较首批有用字节和后续进度。绘制时间和服务器的总时长并不能确定正文何时到达。
在 Guzzle 中,要单独检查流式传输和正文消费。压缩会增加一个解码阶段。解码输出出现时间的变化本身并不能证明代理就是缓冲组件。
中间层能看到什么
不透明的 CONNECT 代理无法像普通 HTTP 那样解析内部的 HTTPS 响应。经授权的 TLS 检查服务具有不同的可见性,因此仅有 HTTPS 并不能证明不存在检查。
确定等待阶段后,使用该组件支持的流式控制。反向代理的指令不会自动适用于正向代理;curl 的输出标志只改变它自己那一段路径。