我希望有人可以帮助我,因为它让我发疯。
我已经在服务器上设置了 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