【问题标题】:Gzipped js files long loading timeGzipped js文件加载时间长
【发布时间】:2013-07-13 17:08:48
【问题描述】:

我压缩了一些站点范围的 js-files/css-files 并将其添加到我的 htaccess-file:

# BEGIN Gzip Compression
AddEncoding gzip .gz
<filesmatch "\.js\.gz$">
AddType "text/javascript" .gz
</filesmatch>
<filesmatch "\.css\.gz$">
AddType "text/css" .gz
</filesmatch>
<ifmodule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP:Accept-encoding} gzip
RewriteCond %{REQUEST_FILENAME} \.(js|css)$
RewriteCond %{REQUEST_FILENAME}.gz -f
RewriteRule ^(.*)$ $1.gz [QSA,L]
</ifmodule>
# END Gzip Compression

# 1 YEAR
<FilesMatch "\.(flv|ico|pdf|avi|mov|ppt|doc|mp3|wmv|wav)$">
Header set Cache-Control "max-age=29030400, public"
</FilesMatch>

# 1 HOUR
<FilesMatch "\.(jpg|jpeg|png|gif|swf)$">
Header set Cache-Control "max-age=3600, public"
</FilesMatch>

# 1 HOUR
<FilesMatch "\.(txt|xml|js|css)$">
Header set Cache-Control "max-age=3600"
</FilesMatch>

# NEVER CACHE - notice the extra directives
<FilesMatch "\.(html|htm|php|cgi|pl)$">
Header set Cache-Control "max-age=0, private, no-store, no-cache, must-revalidate"
</FilesMatch>

不幸的是,现在加载 js 文件需要很多时间(超过 10 秒)

可能是什么问题?

//更新:我忘了提:似乎没有文件被缓存。

【问题讨论】:

    标签: javascript performance caching gzip


    【解决方案1】:

    试试这个,去掉重写规则

    #Gzip
    <ifmodule mod_deflate.c>
    AddOutputFilterByType DEFLATE text/text text/html text/plain text/xml text/css application/x-javascript application/javascript text/javascript
    </ifmodule>
    #End Gzip
    

    【讨论】:

      【解决方案2】:

      要添加到给出的答案,我认为您的重写规则会导致所有请求重定向到静态文件,您应该改用 mod_deflate。 Apache 非常使用 mod_deflate 处理 gzip 压缩,所以我认为没有任何理由拥有单独的资源压缩版本。

      对于缓存策略,我认为您应该使用 mod_expires ,请参见下面的示例

      <IfModule mod_expires.c>
        ExpiresActive On
        ExpiresByType image/gif "access plus 5 months"
        ExpiresByType image/jpeg "access plus 5 months"
        ExpiresByType image/png "access plus 5 months"
        ExpiresByType text/css "access plus 1 week"
        ExpiresByType application/x-javascript "access plus 1 week"
        ExpiresByType application/javascript "access plus 1 week"
        ExpiresByType text/javascript "access plus 1 week"
        ExpiresByType image/x-icon "access plus 5 months"
      </IfModule>
      

      【讨论】:

      • 我把它改成了这个,但据我所见,图像仍然没有被缓存。萤火虫不应该告诉我“来自缓存”之类的东西而不是图像大小吗?
      • 我必须启用这些 apache 设置吗? i41.tinypic.com/2evw7qp.png
      • 语句包含在 标记中,所以是的,如果您不启用 Apache 模块,它将不起作用。如果您在 PATH 中使用 httpd,请运行以下命令 httpd -D DUMP_MODULES | grep module_name 以查看模块是否已启用。
      猜你喜欢
      • 1970-01-01
      • 2021-11-25
      • 2017-05-13
      • 2013-06-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-19
      • 1970-01-01
      相关资源
      最近更新 更多