如果我在 apache 上使用 mod_deflate 或 gzip,HTTP PUT 请求是否会被压缩?

如果我在 apache 上使用 mod_deflate 或 gzip,HTTP PUT 请求是否会被压缩?

我使用 HTTP PUT 请求在服务器上接收 xml 文件。如果我的 Apache 配置了 mod_deflate,它在传输过程中会被压缩吗?我如何验证它是否被压缩?如果没有,我该如何强制压缩?

谢谢!

答案1

根据我的上一个答案

浏览器通过设置 Accept-Encoding 标头来请求压缩内容这里

GET /index.html HTTP/1.1
Host: www.http-compression.com
Accept-Encoding: gzip
User-Agent: Firefox/1.0

这将向浏览器返回压缩数据。但是,要将数据压缩后发送到服务器,您必须压缩整个请求,包括标头。它记录在mod_deflate

mod_deflate 模块还提供了用于解压 gzip 压缩请求主体的过滤器。为了激活此功能,您必须使用 SetInputFilter 或 AddInputFilter 将 DEFLATE 过滤器插入到输入过滤器链中。

...

现在,如果请求包含 Content-Encoding: gzip 标头,则请求主体将自动解压缩。很少有浏览器能够对请求主体进行 gzip 压缩。但是,一些特殊应用程序实际上支持请求压缩,例如一些 WebDAV 客户端。

有一篇描述它的文章是这里

那么该怎么做呢?下面是来自 mod_deflate 源代码的一段简介:只对主请求有效/不处理子请求。这意味着如果我们选择使用 gzip 压缩,则必须对整个请求主体进行压缩,例如在多部分请求中,不可能只压缩包含文件的部分。

答案2

mod_deflateApache发送数据时,而不是接收时。

问题在于,浏览器在了解 Web 服务器支持什么之前就将数据发送到 Web 服务器,因此,它无法压缩数据,也不知道服务器是否能够处理它。

如果您确实需要较低的带宽使用率,您应该在发送 xml 文件之前对其进行压缩,然后在应用程序中对其进行解压缩。

相关内容