我已经在 htaccess 中设置了 deflate。一切正常,除了由于某种原因,javascript 文件被忽略。我尝试了所有可能的组合,包括AddOutputFilterByType DEFLATE
多种 mime 类型,但都没有效果。这不是缓存问题,它实际上让我相信它正在工作,直到我回家再三检查。目前我正在使用这个工具,网站是这里。您可以清楚地看到,除了 js 文件之外的所有内容都被压缩了(与来自 google 的 js 和 css 文件不同,缺少正确的 Content-Encoding)。
这是我当前的 htaccess 文件:
<FilesMatch "\.(tpl|ini|log)">
Order deny,allow
Deny from all
</FilesMatch>
<FilesMatch "\.(js|css)$">
SetOutputFilter DEFLATE
# Netscape 4.x has some problems...
BrowserMatch ^Mozilla/4 gzip-only-text/html
# Netscape 4.06-4.08 have some more problems
BrowserMatch ^Mozilla/4\.0[678] no-gzip
# MSIE masquerades as Netscape, but it is fine
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
# Make sure proxies don't deliver the wrong content
Header append Vary User-Agent env=!dont-vary
</FilesMatch>
ExpiresActive On
ExpiresDefault A0
<FilesMatch "\.(flv|ico|pdf|avi|mov|ppt|doc|mp3|wmv|wav)$">
ExpiresDefault A3024000
Header append Cache-Control "public"
</FilesMatch>
<FilesMatch "\.(gif|jpg|jpeg|png|swf)$">
FileETag MTime Size
ExpiresDefault A3024000
Header append Cache-Control "public"
</FilesMatch>
<FilesMatch "\.(xml|txt|html|js|css)$">
FileETag MTime Size
ExpiresDefault A604800
Header append Cache-Control "proxy-revalidate"
</FilesMatch>
我也将 DEFLATE 过滤器从文件匹配中剔除。
任何帮助表示感谢,问候
编辑:
我已经发现问题了。网站位于 ISA 防火墙后面,该防火墙会从 js 文件中删除“Content-Encoding: gzip”。
答案1
也许问题出在你的 FilesMatch 块上。我们改用AddOutputFilterByType
其他块后就成功了。
# Compress output to save bandwidth and load faster
AddOutputFilterByType DEFLATE text/html text/plain text/xml application/xml application/xhtml+xml text/javascript text/css application/x-javascript application/javascript
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4.0[678] no-gzip
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html