启用 mod_deflate 以发送 Content-Encoding: gzip

Posted

技术标签:

【中文标题】启用 mod_deflate 以发送 Content-Encoding: gzip【英文标题】:Enable mod_deflate to send Content-Encoding: gzip 【发布时间】:2010-10-27 01:22:35 【问题描述】:

EDIT我发现问题其实是php minify。这是发送压缩的内容而不是 Apache。我会在这方面找到更多信息。

根据High Performance Web Sites,如果我在 Apache 2.x 中启用 mod_deflate,通过添加以下行,它应该发送 gzipped/delfated 内容:-

AddOutputFilterByType DEFLATE text/html text/css application/x-javascript

书上还说gzipdeflate更有效。

我通过添加同一行在 httpd.conf 中启用。但是 Apache 发送了Content-Encoding: deflate

我使用 CURL 进行了测试:-

curl -i -H "Accept-Encoding: gzip" "http://192.168.1.33/s.js" >> e:\curl_log.txt

它返回“压缩”内容。但是当我发送命令时:-

curl -i -H "Accept-Encoding: gzip, deflate" "http://192.168.1.33/s.js" >> e:\curl_log.txt

它返回“放气”的内容。

所以,如果浏览器同时支持 deflated 和 gzipped,Apache 会发送 deflated。如何告诉 Apache 更喜欢 gzip 而不是 deflate?

仅供参考:-

我在以下位置找不到任何内容: http://httpd.apache.org/docs/2.0/mod/mod_deflate.html。 中没有出现 no-gzip Apache 会议。 服务器:Apache/2.2.9 (Win32) PHP/5.2.6 FF 发送请求标头为:“Accept-Encoding: gzip, deflate”

【问题讨论】:

【参考方案1】:

请参阅http://httpd.apache.org/docs/2.0/mod/mod_deflate.html 了解所有血腥细节——您确定在配置的其他地方没有出现no-gzip 吗?当你改变你的“浏览器”时会发生什么,例如通过使用wget-U 的各种值?

【讨论】:

【参考方案2】:

我怀疑你用来测试的东西没有发送......

接受编码:gzip

...在请求标头中。

【讨论】:

【参考方案3】:

据我所知,原因已经找到。为了进一步帮助摆脱可能的困惑:

mod_deflate 尽管它的名字目前只支持 gzip。

gzip 更“有效”,原因如下

deflate - 尽管它的名称是 zlib 压缩 (RFC 1950),但应该使用(结合 deflate 压缩 (RFC 1951)),如 RFC 2616 中所述。然而,现实世界中的实现似乎在 zlib 之间有所不同压缩和(原始)放气压缩[3][4]。由于这种混淆,gzip 将自己定位为更可靠的默认方法(2011 年 3 月)。

gzip 和 zlib 是文件/流格式,默认情况下会环绕 deflate 并添加校验和,使其更安全且速度稍慢。另一方面,大小的增加不应该引起任何关注。

另见HTTP_compression - Wikipedia

deflate 会更“高效”(Frequently Asked Questions about zlib - What's the difference between the "gzip" and "deflate" HTTP 1.1 encodings)

【讨论】:

以上是关于启用 mod_deflate 以发送 Content-Encoding: gzip的主要内容,如果未能解决你的问题,请参考以下文章

如何为 PHP 文件启用 mod_deflate?

httpd之mod_deflate模块的使用

Apache网页优化和安全优化

网站启用GZip压缩

面试常备知识-Linux网站架构优化

Apache网页优化