一.配置例子
一个简单的配置文件如下,在nginx的配置文件的http、server、location节点下,使用即可,这样会分别对全部请求,server级别的请求,location的请求进行压缩,根据情况配置在合适的地方
<span style="white-space:pre"> </span>gzip on;
gzip_disable "msie6";
gzip_vary on;
gzip_proxied any;
gzip_comp_level 6;
gzip_buffers 16 8k;
gzip_http_version 1.1;
gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss
#gzip_min_length 353673;二.命令解释
下面解释一下每个参数的大概意思1.gzip
语法:gzip on | off
默认值:gzip off
功能:开启/禁用压缩
例子:
关闭压缩,访问一个网页,火狐的控制台看到如下信息
传输了0.31KB,响应报文如下:
就是一般的响应报文,没什么区别
然后开启压缩
再查看上面的信息,如下:
从0.31KB变成了0.2KB了,还有响应报文中的箭头指的地方,是gzip,说明压缩成功的
2.gzip_disable
语法:gzip_disable REGEX
默认值:无
功能:设置对某些客户端不使用压缩,REGEX是正则表达式(需要PCRE的支持),可以使用msie6表示对IE5.5、6禁用压缩
ps:如果请求是304状态,会发现大小不变,这是因为缓存的原因,使用强制刷新,请求最新文件,这样才会看到上面的效果
3.gzip_http_version
语法:gzip_http_version 1.0/1.1
默认:gzip_http_version 1.1
功能:设置对指定http协议版本进行压缩
4.gzip_buffers
语法:gzip_buffers NUMBER SIZE
默认:gzip_buffers 4 4k/8k
功能:设置缓冲区的数量和大小,如果大小没有设置,那么默认是一个页码的大小,依赖所在系统平台
5.gzip_comp_level
语法:gzip_comp_level 1~9
默认:gzip_comp_level 1
功能:指定压缩率,数值越大,压缩率是最大的,但是消耗CPU资源多,而且慢;而小的数值是最快的,消耗资源少,但是压缩率小。这个根据需要自己权衡
例子:
在9和1的条件下,查看压缩的大小,如下:
压缩率分压缩率为9的比1传输的大小更小
6.gzip_proxied
语法:gzip_proxied [off | expired | no-cache | no-store | private | no_last_modified | no-etag|auth | any]
默认值:gzip_proxied off
功能:根据响应的类型,来设置是否压缩,匹配的前提是后端服务器返回Via Header头
参数意思如下:
off | any:所有请求都禁用 | 启用压缩
no-cache | no-store | private:如果Control-Cache值为3个中其中一个,则启用压缩
no_last_modified | no-etag:如果rtag和last_modified和etag响应头没设置,那么启用压缩
auth:如果设置了Authorization头,则启用压缩
参数意思根据名称很容易知道什么意思
7.gzip_min_length
语法:gzip_min_length SIZE
功能:设定一个压缩的最小值,当Content-Length小于这个值的时候,不进行压缩。太小的文件会越压缩越大,所以可以用这个来指定最小值
例子:
先看下未压缩下的文件的响应信息
这种情况下,Content-Length为294528,如果需要设定大于这个值才进行压缩的话,那么gzip_min_length设定的值大于这个数就OK了。
先设定一个294529,这种情况是不会进行压缩的,因为最小值大于294528了;然后设定294528(或者更小),那么会进行压缩,效果与上面的压缩后的一致
8.gzip_types
语法:gzip_types MIME-TYPE
默认值:text/html
功能:指定需要压缩类型
9.gzip_vary
语法:gzip_vary on | off
默认:gzip_vary off
功能:该指令用于设定是否向响应数据包添加Vary:Accept-Encoding HTTP头