benjisail Asked: 2010-02-19 05:41:19 +0800 CST2010-02-19 05:41:19 +0800 CST 2010-02-19 05:41:19 +0800 CST 如果我在 apache 上使用 mod_deflate 或 gzip,HTTP PUT 请求会被压缩吗? 772 我正在使用 HTTP PUT 请求在我的服务器上接收 xml 文件。如果我的 Apache 配置了 mod_deflate,它会在传输过程中被压缩吗?如何验证它是压缩的?如果没有,我该如何强制压缩? 谢谢! apache-2.2 compression request mod-deflate 2 个回答 Voted mat 2010-02-19T06:10:17+08:002010-02-19T06:10:17+08:00 在mod_deflateapache发送数据时使用,而不是在接收时使用。 问题是浏览器在知道它支持什么之前将数据发送到 Web 服务器,因此它无法压缩数据,不知道服务器是否能够处理它。 如果您确实需要较低的带宽使用率,您应该在发送之前压缩 xml 文件,并在您的应用程序中解压缩它们。 Best Answer Andy 2010-02-19T08:15:06+08:002010-02-19T08:15:06+08:00 根据我之前的回答: 浏览器通过按照此处设置 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 压缩,不可能只压缩包含文件的部分,例如在多部分请求中。
在
mod_deflate
apache发送数据时使用,而不是在接收时使用。问题是浏览器在知道它支持什么之前将数据发送到 Web 服务器,因此它无法压缩数据,不知道服务器是否能够处理它。
如果您确实需要较低的带宽使用率,您应该在发送之前压缩 xml 文件,并在您的应用程序中解压缩它们。
根据我之前的回答:
浏览器通过按照此处设置 Accept-Encoding 标头来请求压缩内容
这会将压缩数据返回给浏览器。但是,要将数据压缩到服务器上,您必须压缩整个请求,包括请求头。它记录在mod_deflate:
描述它的文章在这里: