Apache deflate 忽略 javascript

Apache deflate 忽略 javascript

我已经在 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

相关内容