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 的输出标志只改变它自己那一段路径。

相关文章