linux Nginx配置篇:gzip常用参数详解(附使用效果验证过程)

来源:互联网 发布:网络交易监管系统 编辑:程序博客网 时间:2024/05/29 08:17

gzip模块是使用“gzip”方法压缩响应的过滤器,有助于将响应传输的数据大小减少一半甚至更多,能有效的缓解带宽及流量问题。以下内容均翻译于官网用户手册,介绍了gzip的一些常用参数,更多配置信息可以直接访问官网进行查看:http://nginx.org/en/docs/http/ngx_http_gzip_module.html#gzip

1.参数项:gzip

参数值:on(启用gzip压缩) | off(停用gzip压缩),开启压缩后,可以看到http响应头的Content-Encoding值为gzip

默认值:off

作用域(即可配置的地方):http,server,location,if in location

使用效果对比,这里我请求的是我们项目中的某个css文件,有兴趣的童鞋可以自己试下:

gzip off:该css文件实际大小约为119.67k,传输119.67k


gzip on:开启gzip压缩后,同一个css文件,传输缩小了近5倍,这是单个文件,可想而知在实际部署中,开启gzip对我们的带宽和用户体验是有很大帮助的。



 

2.参数项:gzip_comp_level(压缩比)

参数值:1-9的正整数,1最低,压缩时间短,9最高,压缩时间长,吃cpu,但是压缩效果好,实质是用cpu换流量,视情况而用。

默认值:1

作用域:http,server,location

使用效果对比:我这里只取了最低1和最高9两个压缩比进行压缩效果的比较,未比较对cpu的消耗,因为测试过程中发现配1或配9,对大文件或者小文件进行压缩时,cpu消耗差距不是很明显,在此不给结论,有兴趣的童鞋可以自己试试。

另外我这里遇到个问题,有兴趣的童鞋可以在评论区一起讨论下,下面测试1VS9的压缩效果我用的是常规文件,后面我换了张128MB的大图片,配9的压缩效果反而没有配1的压缩效果好,附图片网盘地址,有兴趣的童鞋可以下载来试下:http://pan.baidu.com/s/1bIaAb8

gzip_comp_level 1:传输24.74k

 

gzip_comp_level 9:传输19.25k


3.参数项:gzip_min_length

参数值:正整数,单位为字节,也可用k表示千字节,比如写成1024与1k都可以,效果是一样的,表示当资源大于1k时才进行压缩,资源大小取响应头中的Content-Length进行比较,经测试如果响应头不存在Content_length信息,该限制参数对于这个响应包是不起作用的;另外此处参数值不建议设的太小,因为设的太小,一些本来很小的文件经过压缩后反而变大了,官网没有给出建议值,在此建议1k起,因为小于1k的也没必要压缩,并根据实际情况来调整设定。

默认值:20,单位字节

作用域:http,server,location

使用效果对比:还是用上面测试的那个css文件,文件实际大小为119.67KB,我这里把gzip_min_length值分别配成120k,119k测试该参数使用效果。

 gzip_min_length 120k:css文件大小未达到该值,不压缩


gzip_min_length 119k:css文件已达到该值,压缩


4.参数项:gzip_http_version

参数值:1.0 | 1.1,注意,此处只能是1.0,或者1.1。设置压缩响应所需的最小http协议版本。

默认值:1.1

作用域:http,server,location

 

5.参数项:gzip_types

参数值:响应报文数据格式,或者说类型,对应http响应头中的Content-type字段,如常见的有text/html、text/css、application/json、application/javaScript等。用于指定要压缩的响应报文类型。”*”表示压缩所有格式的响应报文,多种格式用空格隔开。如text/html text/css。

默认值:text/html

作用域:http,server,location

另外需要注意的是,gzip参数的作用域优先级是内层高于外层的,也就是说,如果http下配了gzip参数,location下也配了,最终是以location中的配置为准的。