gzip是GNUzip的缩写,最早用于UNIX系统的文件压缩。
HTTP协议上的gzip编码是一种用来改进web应用程序性能的技术,web服务器和客户端(浏览器)必须共同支持gzip。
目前主流的浏览器,Chrome,firefox,IE等都支持该协议。
常见的服务器如Apache,Nginx,IIS同样支持gzip。
gzip压缩比率在3到10倍左右,可以大大节省服务器的网络带宽。
而在实际应用中,并不是对所有文件进行压缩,通常只是压缩静态文件。
配置
gzip on;
gzip_disable "msie6";
gzip_vary on;
gzip_proxied any;
gzip_comp_level 6;
gzip_buffers 4 8k;
gzip_min_length 1k;
gzip_http_version 1.1;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
说明
# 开启gzip压缩
gzip on;
# 低版本兼容
gzip_disable "msie6";
# Nginx作为反向代理的时候启用,允许或者禁止压缩基于请求和响应的响应流。
# 我们设置为any,意味着将会压缩所有的请求
gzip_proxied any;
# 告诉nginx在压缩资源之前,先查找是否有预先gzip处理过的资源
gzip_static on;
# 设置对数据启用压缩的最少字节数,建议设置成大于1k的字节数,小于1k可能会越压越大。
gzip_min_length 1024;
# 压缩级别,1-10,越高越消耗CPU,但是压缩越好(传输快但比较消耗cpu)
# 默认值: gzip_comp_level 1
gzip_comp_level 6;
# 设置系统获取几个单位的缓存用于存储gzip的压缩结果数据流。
# 4 4k 代表以4k为单位,按照原始数据大小以4k为单位的4倍申请内存。
# 4 8k 代表以8k为单位,按照原始数据大小以8k为单位的4倍申请内存。
gzip_buffers 4 4k/8k;
# 识别http的协议版本,现在的浏览器基本都支持gzip解压。
# 可以不用设这个值,保持系统默认即可。
gzip_http_version 1.1;
# 设置需要压缩的数据格式
gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;