是否可以为请求启用 http 压缩?

Mik*_*e L 43 http compression

我看到很多关于为服务器响应启用 http 压缩的信息,但是对于传入的请求呢。浏览器在将大型帖子发送到服务器之前对其进行压缩是否有意义?

另一个示例是我们使用的 REST Web 服务。我们必须频繁发送带有大型 XML 文件(10+ MB)的 PUT 请求,并且肯定会在双方看到一些带宽/速度优势。

那么这是服务器端解决的问题还是每个 Web 应用程序都必须单独处理它?

And*_*ndy 34

要将PUT数据压缩到服务器,您必须压缩请求正文并设置Content-Encoding: gzip标头。标头本身必须是未压缩的。它记录在mod_deflate 中

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

...

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

一篇描述它的文章在这里

你是怎么做到的?这是一个简介,同样来自 mod_deflate 源代码:仅适用于主请求/无子请求。这意味着如果我们选择使用它,请求的整个主体必须​​是 gzip 压缩的,不可能只压缩包含文件的部分,例如在多部分请求中。

另外,浏览器可以通过Accept-Encoding按照此处设置标头来请求压缩服务器响应内容:

GET /index.html HTTP/1.1
Host: www.http-compression.com
Accept-Encoding: gzip
User-Agent: Firefox/1.0
Run Code Online (Sandbox Code Playgroud)

这会将压缩数据返回给浏览器。

  • +1 注意你写了`你必须压缩整个请求,包括标头`。但是,**http 标头不得压缩**。唯一需要压缩的东西(完整的,正如你引用的文章所说的那样),是 http 正文。 (5认同)