https://code.google.com/p/zopfli/
是Google最新推出的zlib压缩工具,和之前的gzip算法相比,能够节约3~8%的压缩空间,压缩时间差不多要慢100~1000倍。虽然压缩时间要慢很多,但是它很适合用来做网页静态资源压缩,节约用户下载时间和运营中的流量带宽成本。第一时间在我们的一个生产环境试用了一下,对于js和css文件可以节约5%的size,很不错。
使用zopfli很简单,下载源码,编译即可:
开启nginx的静态gz文件支持:
然后对需要压缩的js和css文件执行
这样浏览器请求application.js的时候,就会自动下载用zopfli压缩好的application.js.gz了。
如果你在用rails或者其他基于sprockets的ruby web框架,还可以写一个Sprockets::Asset的monkey patch,放在initializers目录或者其他lib目录下,自动化地将原先默认用zlib压缩的js和css,改成用zopfli来处理:
来试试看吧, <script type="text/javascript"> </script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
使用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
来试试看吧, <script type="text/javascript"> </script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>