gpt4 book ai didi

apache - 防止 Apache 对 gzip 内容进行分块

转载 作者:行者123 更新时间:2023-12-02 04:12:03 26 4
gpt4 key购买 nike

在 Apache2 中使用 mod_deflate 时,Apache 会将 gzip 压缩的内容分 block ,设置 Transfer-encoding: chunked header 。虽然这会缩短下载时间,但我无法显示进度条。

如果我自己在 PHP 中处理压缩,我可以先将其完全 gzip 并设置 Content-length header ,以便向用户显示进度条。

是否有任何设置会改变 Apache 的默认行为,并让 Apache 设置 Content-length header 而不是分 block 响应,这样我就不必自己处理压缩?

最佳答案

您也许可以使用 sendBufferSize 来获得一个足够大的值以将您的响应包含在一个 block 中。

那么 chunked content 是 HTTP/1.1 协议(protocol)的一部分,你可以通过设置 force-来强制一个 HTTP/1.0 响应(所以不分 block :“ A server MUST NOT send transfer-codings to an HTTP/1.0 client. ”) response-1.0 在您的 apache 配置中。但是 PHP 打破了这个设置 ,这是 PHP 的一个长期已知的错误,有一个 workaround

我们可以尝试使用防止分 block 内容的 header 修改客户端的请求,但是 w3c 说:“ 所有 HTTP/1.1 应用程序必须能够接收和解码“分 block ”传输编码 ”,所以我不'认为没有像'Accept'这样的标题可以防止服务器分 block 内容。但是,您可以尝试在 HTTP/1.0 中设置您的请求,它并不是真正的请求 header ,它是第一行,当然应该可以使用 jQuery。

最后一件事,HTTP/1.0 缺少一件大事,“host” header 不是强制性的,如果您使用基于名称的虚拟主机,请验证您在 HTTP/1.0 中的请求是否仍在使用“host” header 。

编辑: 通过使用解决方法中引用的技术,您可以看到您可以在 PHP 代码中调整 Apache env。这可用于仅对您的特殊 gzip 内容强制使用 1.0 模式,并且您应该使用它来防止您在 HTTP/1.0 中完成应用程序(或使用请求模式为您的 gzip 请求设置 HTTP/1.0)。

关于apache - 防止 Apache 对 gzip 内容进行分块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4538880/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com