Apache mod_deflate:Curl VS其他所有内容

时间:2012-10-08 07:01:30

标签: apache debugging logging user-agent mod-deflate

我希望有人可以帮我解决这个问题,因为这会让我发疯。

我在服务器上设置了mod_deflate,所有SEEMS都要正确设置,但是当我通过浏览器访问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

1 个答案:

答案 0 :(得分:0)

添加以下标题:

Header set Content-Encoding x-deflate

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

  

有没有办法检查mod_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

<强>参考