启用 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
书上还说gzip
比deflate
更有效。
我通过添加同一行在 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的主要内容,如果未能解决你的问题,请参考以下文章