Nginx中gzip_static模块的使用

在nginx中打开gzip压缩:
   gzip  on;
   gzip_min_length  1024;
   gzip_buffers     4 8k;
   gzip_types       text/plain application/x-javascript text/css text/html application/xml;

一般情况,需要设置一下gzip_min_length的值,建议设置成大于1k的字节数,小于1k可能会越压越大。 即: gzip_min_length 1024
gzip_types:匹配MIME类型进行压缩,(无论是否指定)"text/html"类型总是会被压缩的。

另外nginx还提供了一个static_gzip模块,若要使用它需要在编译的时候把static_gzip模块编译进去:
./configure --with-http_gzip_static_module

此模块的作用就是在接到请求后,会到url相同的路径的文件系统去找扩展名为“.gz”的文件
比如:http://www.iteye.com/stylesheets/homepage.css
nginx就会先查找 stylesheets/homepage.css.gz 这个文件,如果存在直接把它发送出去,如果不存在,再将stylesheets/homepage.css文件进行gzip压缩,再发送出去,这样可以避免重复的压缩无谓的消耗资源,这个模块不受gzip_types限制,会对所有请求有效。所以建议不要在全局上使用,因为一般来说大部分都是动态请求,是不会有.gz这个文件的,建议只在局部我们确认有.gz的目录中使用。
Nginx不会自动的将压缩结果写入文件系统,这点不同于lighttpd,所以如果想使用static_gzip模块,需要自己写脚本生成.gz文件。
而对于Rails3项目来说就很方便了,只需要针对assets目录启用gzip_static模块即可:
location ~ ^/(assets)/  {
  root /path/to/public;
  gzip_static on; # to serve pre-gzipped version
  expires max;
  add_header Cache-Control public;
}


猜你喜欢

转载自inosin.iteye.com/blog/1299705