我通过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设置的属性。有人有这方面的经验吗?
答案 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的配置一样好。