【问题标题】:Combining deflate and minify - am i creating overhead?结合 deflate 和 minify - 我是否会产生开销?
【发布时间】:2011-01-02 18:04:24
【问题描述】:

我使用 google.codes minify 即时缩小我的 css 和 js 文件。我还设置了我的 .htaccess 以在我的所有 css 和 js 文件上使用 deflate - 一些 js 文件(如 shadowbox 和 tinymce)引用代码中的其他 js 文件的原因。 所以我正在使用 apache deflate 进行压缩,并使用 gzip 压缩一些 js 和 css 文件——我这样做是否会产生开销——首先 gzipping(minify)然后 zlib(deflate)将再次运行。或者 apache deflate 会忽略在标题中具有由 minify 设置的属性的已压缩文件。有人有这方面的经验吗?

【问题讨论】:

  • 这是一个非常好的问题!我不知道答案是什么,但 Minify 的作者似乎在其讨论组中非常敏感:groups.google.com/group/minify

标签: gzip zlib minify mod-deflate


【解决方案1】:

缩小+放气/gzipping可以很好地结合使用。

我使用 mod rewrite 来实现这个目的,我已将所有 css/js 文件预构建为 2 个版本,原始版本和 .css.gz/.js.gz 版本。

浏览器只发送 .js/.css 请求,服务器检查 .js.gz/.css.gz 的存在,如果满足某些条件则返回 gzip 压缩的内容。

所以从 js 动态加载 js/css 文件并不重要(例如你的 shadowbox 或 tinymce)

基本上就是这样

RewriteEngine On
RewriteBase /

#Check for browser's Accept-Encoding,
RewriteCond "%{HTTP:Accept-Encoding}" "gzip.*deflate|deflate.*gzip"

#check file name is endswith css or js
RewriteCond %{REQUEST_FILENAME} "\.(css|js)$"

#check existance of .gz file name
RewriteCond %{REQUEST_FILENAME}.gz -s

#rewrite it to .js.gz or .css.gz
RewriteRule ^.*$ %{REQUEST_URI}.gz [L]

#update some response header
<FilesMatch "\.js\.gz$">
    AddEncoding gzip .gz
    ForceType "text/javascript"
</FilesMatch>

<FilesMatch "\.css\.gz$">
    AddEncoding gzip .gz
    ForceType "text/css"
</FilesMatch>

【讨论】:

  • 谢谢!你那里有很棒的脚本!但是你知道谷歌的缩小工具(不是一般的缩小)实际上会缩小并发送压缩文件,然后我会用服务器部分再次这样做(apache deflate on the fly)。并且做了两次我想知道我是否在创造开销..?抱歉,如果我不清楚...
  • 你是说双压缩?我猜它不会因为浏览器不知道它需要解压缩 2 次。
【解决方案2】:

gzip 使用 zlib 压缩算法,大多数字节序列在第二次压缩时不会很好。

【讨论】:

  • 哦,我不知道 gzip 使用 zlib 库。我认为这是 gzip 和 deflate 之间的区别。 gzip 使用良好的 gzip 库并使用 zlib 库放气。但问题是文件是否会被双重压缩——我相信它不会变得更小——但客户端必须首先对 deflatet 进行压缩,然后再对压缩文件进行压缩——对于服务器也是如此。所以那里一定有开销..?
【解决方案3】:

Minify 不通过 Apache 提供文件,因此没有双重编码。

使用 DEFLATE 过滤器,Apache 每次都会即时压缩请求的文件。 Minify 在第一次请求时压缩文件,然后发送预压缩的缓存版本以供以后请求。

作为基于 PHP 的它以性能换取灵活性和易于维护,但如果您在它前面放置一个代理缓存,它的性能将与 S.Mark 的配置一样好。

【讨论】:

    猜你喜欢
    • 2016-06-18
    • 1970-01-01
    • 1970-01-01
    • 2010-10-07
    • 2015-07-05
    • 2017-04-28
    • 2021-09-29
    • 2021-08-01
    • 2016-02-20
    相关资源
    最近更新 更多