【问题标题】:Gzip on merged CSS/JS files in MagentoMagento 中合并 CSS/JS 文件的 Gzip
【发布时间】:2012-01-16 05:55:17
【问题描述】:

我正在尝试加快我的 Magento 商店的速度,并且最近启用了 Gzip 压缩。问题是,我还使用 Magento 内置函数将所有 CSS 和 JS 文件合并在一起,为每个文件提供一个文件。

Gzip 不会压缩这些文件,因为这是 Magento,这些文件非常庞大,会显着降低网站速度。

我能做些什么让 Gzip 也压缩这些文件?它们位于 /media/js/ 和 /media/css/

编辑:使用 mod_deflate,现在我将其设置为:

<IfModule mod_deflate.c>

AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css text/javascript
AddOutputFilterByType DEFLATE application/xml application/xhtml+xml application/rss+xml
AddOutputFilterByType DEFLATE application/javascript application/x-javascript
AddOutputFilterByType DEFLATE application/x-httpd-php

BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4\.0[678] no-gzip
BrowserMatch \bMSI[E] !no-gzip !gzip-only-text/html

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|doc)$ no-gzip dont-vary
SetEnvIfNoCase Request_URI \.(?:avi|mov|mp3|mp4|rm)$ no-gzip dont-vary

【问题讨论】:

  • 您确定这些文件会拖慢您的网站速度吗?如果缓存配置正确,这些资源应该只被每个客户端请求一次。
  • 查看 fooman speedster。为您处理所有这些的很棒的扩展。
  • mod_deflate 应该压缩所有内容,甚至是 php 生成的内容。 magento 是否为 css 和 js 发送正确的 MIME 标头?

标签: javascript apache magento gzip mod-deflate


【解决方案1】:

当 Magento 合并任何通过其渲染系统的 CSS 和 Javascript 文件时,它会像这样为这些资源创建 URL,并将它们添加到页面头部

http://magento1point6point1.dev/media/css/a438f0287fdd0c52d9bd196d355a63c3.css
http://magento1point6point1.dev/media/js/0567fb98ebe279ea4faf5acf433fc6a1.js

反过来,这将在文件系统上生成文件

media/css/a438f0287fdd0c52d9bd196d355a63c3.css
media/js/0567fb98ebe279ea4faf5acf433fc6a1.js

此时,Magento 几乎完全从进程中删除(.htaccess 中有一个RewriteCond %{REQUEST_URI} !^/(media|skin|js)/ 用于捕获不存在的文件)。听起来您为站点的其他区域正确设置了 gzip 压缩。因此,尽管您已经为 gzip 压缩配置了其他文件夹,但请配置 media/cssmedia/js 以执行相同的操作。

如果没有更多信息,就无法进一步调试您的系统。

【讨论】:

  • 谢谢。编辑了我的第一篇文章以提供更多信息,附上我的 htaccess 文件摘录,使用 mod_deflate 进行压缩,但不知道如何包含该目录以进行压缩。
  • @SarthakGupta 如果您使用了 5 个问号,那么有人可能会提供帮助。只有三个,我认为我们无法解决它。
  • 我工作的网站是 collectorsheritage.com 。我正在使用 HTTP 实时标头来评估压缩(如果有)。虽然 html 文件被压缩,但我合并的 js 和 css 文件并没有发生同样的情况。另一个重要的事情是我已经安装并运行了 fooman Speedster 模块。
  • 嗨@AlanStorm 我试图正确理解这一点。在您回复的最后一点“听起来您已经为站点的其他区域正确设置了 gzip 压缩。所以,但是您已经为 gzip 压缩配置了其他文件夹,配置 media/css 和 media/js 来做同样的事情。 "你到底是什么意思?我认为在根目录中设置 DEFLATE 将计入任何目录(根目录下)中的所有文件类型。谢谢!!你能详细说明一下吗?
  • 有人可以详细说明这里需要什么吗?我的 YSlow 确实确认 media/*/js 和 media/*.css 没有被 gzip 压缩....但是如何告诉 htaccess 压缩这两个?
【解决方案2】:

您可以使用 Apache 的 http://httpd.apache.org/docs/2.0/mod/mod_deflate.html 模块。

【讨论】:

  • 谢谢,我已经在使用它,编辑了我的第一篇文章以添加 .htaccess 的摘录,我只是不知道如何包含来自 /media/css/ 和 /media/js/ 的文件也被压缩。
【解决方案3】:

对于遇到相同问题的任何人:首先尝试刷新您的浏览器缓存。

Google Chrome PageSpeed Insights 告诉我,我的 Magento 商店的合并 css 和 js 文件没有被压缩,尽管我启用了 GZIP 并正确配置了 .htaccess。

根据 PageSpeed Insights 的说法,在清除 Chrome 浏览器缓存后,这些合并的文件也被压缩了。我猜一些旧的未压缩文件是从浏览器缓存中提供的......

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-09-20
    • 1970-01-01
    • 1970-01-01
    • 2017-10-10
    • 2018-04-19
    • 1970-01-01
    • 2012-01-02
    • 2013-12-09
    相关资源
    最近更新 更多