结合放气和缩小 - 我创造了开销吗?

时间:2010-01-08 01:40:32

标签: gzip zlib minify mod-deflate

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

3 个答案:

答案 0 :(得分:5)

Minifying + deflating / gzipping可以很好地协同工作。

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

浏览器只发送.js / .css请求,服务器检查.js.gz / .css.gz的存在,并在匹配某些条件时返回gzipped内容。

因此js / css文件从js(例如你的影子箱或者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>

答案 1 :(得分:1)

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

答案 2 :(得分:1)

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

使用DEFLATE过滤器,Apache每次都会动态gzips所请求的文件。在第一个请求中缩小gzips文件,然后发送预先gzipped的缓存版本以供以后的请求使用。

基于PHP,它可以提高性能,实现灵活性和易维护性,但如果在它前面抛出代理缓存,它的性能将与S.Mark的配置一样好。