Nginx----使用压缩传输

一.配置例子

一个简单的配置文件如下,在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

功能:该指令用于设定是否向响应数据包添加VaryAccept-Encoding HTTP





版权声明:本文为u013160932原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。