使用zopfli很简单,下载源码,编译即可:
git clone https://code.google.com/p/zopfli/ cd zopfli make
开启nginx的静态gz文件支持:
server { gzip_static on; }
然后对需要压缩的js和css文件执行
zopfli application.js zopfli application.css
这样浏览器请求application.js的时候,就会自动下载用zopfli压缩好的application.js.gz了。
如果你在用rails或者其他基于sprockets的ruby web框架,还可以写一个Sprockets::Asset的monkey patch,放在initializers目录或者其他lib目录下,自动化地将原先默认用zlib压缩的js和css,改成用zopfli来处理:
module Sprockets class Asset def write_to(filename, options = {}) # Gzip contents if filename has '.gz' options[:compress] ||= File.extname(filename) == '.gz' FileUtils.mkdir_p File.dirname(filename) # Write out as is File.open("#{filename}+", 'wb') do |f| f.write to_s end if options[:compress] # 调用命令行来处理,等zopfli的ruby binding gem发布后,就可以用pure ruby code `/your/path/to/zopfli/zopfli #{filename}+` # Atomic write FileUtils.mv("#{filename}+.gz", filename) else # Atomic write FileUtils.mv("#{filename}+", filename) end # Set mtime correctly File.utime(mtime, mtime, filename) nil ensure # Ensure tmp file gets cleaned up FileUtils.rm("#{filename}+") if File.exist?("#{filename}+") end end end
来试试看吧,