2

我希望有人可以帮助我,因为它让我发疯。

我已经在服务器上设置了 mod_deflate,一切似乎都设置正确,但是当我通过浏览器访问 CSS 或 JavaScript 文件时,它说文件没有被压缩。

但是,当我执行 curl 请求时,响应标头说文件正在被压缩。

是的,模块已安装并启用,因为它正在成功记录:

当我通过浏览器(Chrom、FF 等)、wget 或任何在线页面速度测试请求文件时,它会记录类似

"GET /var/cache/_2c95fa0249c997011610ad7ddd3332a8.css HTTP/1.0" gzip, deflate -/- (-%)

当我通过 curl 请求时,它提供了一个类似的日志

"HEAD /var/cache/_2c95fa0249c997011610ad7ddd3332a8.css HTTP/1.0" gzip, deflate 108466/358074 (30%)

有没有办法检查 mod_deflate 是否真的有效?我在 mod_deflate 的设置中遗漏了什么吗?与 expires 指令和 mod_deflate 是否存在冲突(我已经删除了除 mod_deflate 之外的所有内容,但它仍然不起作用)?

以下是我设置的配置:

主配置文件

<IfModule mod_deflate.c>
    DeflateCompressionLevel 4
    DeflateFilterNote Input instream
    DeflateFilterNote Output outstream
    DeflateFilterNote Ratio ratio
    LogFormat '"%r" %{Accept-Encoding}i %{outstream}n/%{instream}n (%{ratio}n%%)' deflate
    CustomLog logs/deflate_log deflate 
</IfModule>

.htaccess 文件

<FilesMatch "\.(css|js)$">
 Allow from all
</FilesMatch>
<IfModule mod_expires.c>
  ExpiresActive On
  ExpiresDefault "access plus 1 seconds"
  ExpiresByType text/css "access plus 604800 seconds"
  ExpiresByType text/javascript "access plus 216000 seconds"
  ExpiresByType application/x-javascript "access plus 216000 seconds"
</IfModule>
<IfModule mod_headers.c>
<FilesMatch "\\.(css)$">
    Header set Cache-Control "max-age=2692000, public"
</FilesMatch>
<FilesMatch "\\.(js)$">
    Header set Cache-Control "max-age=216000, private"
</FilesMatch>
Header unset ETag
Header unset Last-Modified
</IfModule>
<IfModule mod_deflate.c>
SetOutputFilter DEFLATE
SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png)$ no-gzip dont-vary
SetEnvIfNoCase Request_URI \.(?:exe|t?gz|zip|bz2|sit|rar)$ no-gzip dont-vary
SetEnvIfNoCase Request_URI \.(?:pdf|avi|mov|mp3|mp4|rm)$ no-gzip dont-vary

#Dealing with proxy servers
<IfModule mod_headers.c>
    Header append Vary User-Agent env=!dont-vary
</IfModule>
</IfModule>

有问题的文件:

http://diva.akqire.com/var/cache/_2c95fa0249c997011610ad7ddd3332a8.css

4

1 回答 1

0

添加以下标题:

Header set Content-Encoding x-deflate

如果使用编码,Apache 服务器不会发送Content-Length响应标头。gzip

有没有办法检查 mod_deflate 是否真的有效?

使用自定义日志来跟踪 deflate 使用情况:

DeflateFilterNote Input input_info
DeflateFilterNote Output output_info
DeflateFilterNote Ratio ratio_info
LogFormat '"%r" %{output_info}n/%{input_info}n (%{ratio_info}n%%)' deflate
CustomLog /var/log/httpd/deflate_log deflate

参考

于 2013-11-04T19:33:39.180 回答