无法 gzip 某些 JS 和 CSS 文件

无法 gzip 某些 JS 和 CSS 文件

我正在优化 magento 商店,一些 JS 和 CSS(在MEDIA文件夹中编译和最小化)没有按照应有的方式进行 gzip 压缩。

所有页面都经过 gzip 压缩(例如此 HTML 页面),但有些内容不是(例如这个 JS 文件)。

通过 gtmetrix.com 和 whatsmyip 进行测试HTTP 压缩测试

我有这个配置.htaccess

    <IfModule mod_deflate.c>

    # Insert filter on all content
    SetOutputFilter DEFLATE

    # Insert filter on selected content types only
    #AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css text/javascript

    # 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

    # Don't compress images
    #SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png)$ no-gzip dont-vary

    # Make sure proxies don't deliver the wrong content
    Header append Vary User-Agent env=!dont-vary

</IfModule>

# compress text, HTML, JavaScript, CSS, and XML
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/x-javascript
AddOutputFilterByType DEFLATE application/js

# remove browser bugs
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4\.0[678] no-gzip
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
Header append Vary User-Agent

我可能错过了什么?

答案1

您可以在 .htaccess 中使用它

# BEGIN Compress text files
<ifModule mod_deflate.c>
  <filesMatch "\.(css|js|x?html?|php)$">
    SetOutputFilter DEFLATE
  </filesMatch>
</ifModule>
# END Compress text files

这是 .htaccess 配置示例的一部分,可压缩此处列出的所有 *.css、*.js、*.html、*.xhtml 和 *.php 文件(http://www.samaxes.com/2009/01/more-on-compressing-and-caching-your-site-with-htaccess/)。其中还列出了如何按类型设置标头和缓存的过期时间。但这对您来说并不是那么重要。

设置压缩的另一种方法是使用 apache 的外部扩展模块mod_gzip。这也是非常流行的解决方案。要使用此解决方案,您应该在 .htaccess 中写入此

<ifModule mod_gzip.c>
  mod_gzip_on Yes
  mod_gzip_dechunk Yes
  mod_gzip_item_include file \.(html?|txt|css|js|php|pl)$
  mod_gzip_item_include handler ^cgi-script$
  mod_gzip_item_include mime ^text/.*
  mod_gzip_item_include mime ^application/x-javascript.*
  mod_gzip_item_exclude mime ^image/.*
  mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.*
</ifModule>

有关更多详细信息,请参阅本文(http://www.samaxes.com/2008/04/htaccess-gzip-and-cache-your-site-for-faster-loading-and-bandwidth-saving/)。

答案2

我遇到了同样的问题,我正在使用 Chrome 38.0.2125.104(64 位)开发工具进行测试,分析服务器响应标头。

我认为你应该将此指令添加到你的 htaccess 中

AddOutputFilterByType DEFLATE text/javascript

相关内容