gzip压缩
1. gzip简介
gzip是nginx服务器的ngx_http_gzip_module模块提供的在线实时数据压缩功能。通过开启gzip功能,可对服务器响应的数据进行压缩处理,变成体积更小的二进制文件。在高PV的网站应用中,可以节省海量的带宽。
如下图所示,客户端浏览器发出的请求头中声明了支持gzip类型的压缩文件,若服务器端开启了gzip压缩功能,那么响应数据会经过压缩后再返回客户端,由客户端负责解压缩再渲染:
http请求头声明支持的压缩类型
2. gzip配置
gzip配置常用参数:
gzip on | off; # 是否开启gzip
gzip_buffers 32 4K | 16 8K # 缓冲(压缩数据缓冲在内存中,当达到N块内存,每块MK时,输出缓存)
gzip_comp_level [1-9] # 压缩级别,级别越高,压缩比越大,越消耗CPU资源,推荐6
gzip_disable # 指定不进行gzip压缩的uri
gzip_min_length 200 # 压缩文件长度超过200的文件
gzip_http_version 1.0 | 1.1 # 指定进行压缩的最小http协议版本
gzip_proxied # 如果请求者是代理服务器,该如何缓存
gzip_types text/plain application/xml # 指定要压缩的文件的类型
gzip_vary on | off # 是否传输gzip压缩标志
在开启gzip压缩前,先观察下我们访问的页面响应的数据长度:
gzip开启前传输的数据长度
接下来开启gzip:
[root@localhost conf]# vim nginx.conf
# 在http上下文中添加gzip配置
gzip on;
gzip_buffers 32 4K;
gzip_comp_level 6;
gzip_min_length 200;
gzip_types text/xml text/css application/javascript image/jpeg;
# 保存配置退出,重启nginx服务
[root@localhost conf]# ../sbin/nginx -s reload
开启gzip后,传输的数据长度只有原先的1/10大小。
gzip开启后传输的数据长度
3. 注意事项
- 一般情况下,不建议对图片、mp3等二进制文件配置压缩,因为二进制文件的压缩率比较小,但耗费的cpu资源却很高
- 不对太小的文件进行压缩