试用zopfli - 更高效的zlib压缩工具

https://code.google.com/p/zopfli/  是Google最新推出的zlib压缩工具,和之前的gzip算法相比,能够节约3~8%的压缩空间,压缩时间差不多要慢100~1000倍。虽然压缩时间要慢很多,但是它很适合用来做网页静态资源压缩,节约用户下载时间和运营中的流量带宽成本。第一时间在我们的一个生产环境试用了一下,对于js和css文件可以节约5%的size,很不错。 

使用zopfli很简单,下载源码,编译即可: 
Bash代码    收藏代码
  1. git clone https://code.google.com/p/zopfli/  
  2. cd zopfli  
  3. make  


开启nginx的静态gz文件支持: 
Nginx代码    收藏代码
  1. server {  
  2.   gzip_static on;  
  3. }  


然后对需要压缩的js和css文件执行 
Bash代码    收藏代码
  1. zopfli application.js  
  2. zopfli application.css  


这样浏览器请求application.js的时候,就会自动下载用zopfli压缩好的application.js.gz了。 

如果你在用rails或者其他基于sprockets的ruby web框架,还可以写一个Sprockets::Asset的monkey patch,放在initializers目录或者其他lib目录下,自动化地将原先默认用zlib压缩的js和css,改成用zopfli来处理: 
Ruby代码    收藏代码
  1. module Sprockets  
  2.   class Asset  
  3.     def write_to(filename, options = {})  
  4.       # Gzip contents if filename has '.gz'  
  5.       options[:compress] ||= File.extname(filename) == '.gz'  
  6.   
  7.       FileUtils.mkdir_p File.dirname(filename)  
  8.   
  9.       # Write out as is  
  10.       File.open("#{filename}+"'wb'do |f|  
  11.         f.write to_s  
  12.       end  
  13.   
  14.       if options[:compress]  
  15.         # 调用命令行来处理,等zopfli的ruby binding gem发布后,就可以用pure ruby code  
  16.         `/your/path/to/zopfli/zopfli #{filename}+`  
  17.         # Atomic write  
  18.         FileUtils.mv("#{filename}+.gz", filename)  
  19.       else  
  20.         # Atomic write  
  21.         FileUtils.mv("#{filename}+", filename)  
  22.       end  
  23.   
  24.       # Set mtime correctly  
  25.       File.utime(mtime, mtime, filename)  
  26.   
  27.       nil  
  28.     ensure  
  29.       # Ensure tmp file gets cleaned up  
  30.       FileUtils.rm("#{filename}+"if File.exist?("#{filename}+")  
  31.     end  
  32.   end  
  33. end  


来试试看吧,  <script type="text/javascript"> </script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值