现在的位置:首页  /  云计算培训 >云计算技术教程

运维工程师如何配置Nginx gzip压缩实现性能优化

来源: 薪享宏福
发布时间: 2019年04月02日
分享到:
1.Nginx gzip压缩功能介绍
 
Nginx gzip压缩模块提供了压缩文件内容的功能,用户请求的内容在发送到用户客户端之前, Nginx服务器会根据一些具体的策略实施压缩,以节约网站出口带宽,同时加快数据传输效率,来提升用户访问体验。
 
2.Nginx gzip压缩的优点
 
提升网站的用户体验:发送给用户的内容小了,用户访问单位大小的页面就加快了,用户体验提升了,网站口碑就好了。
 
节约网站带宽成本:数据是压缩传输的,因此节省了网站的带宽流量成本,不过压缩时会稍微消耗一些CPU资源 ,这个一般可以忽略不计。
 
此功能既能提升用户体验,又能节约公司成本,一举多得。对于几乎所有的web服务来说,这是一个非常重要的功能,Apche服务也有此功能。
 
3.需要和不需要压缩的对象
 
纯文本内容的压缩比很高,因此,纯文本的内容最好进行压缩,例如: html、js、 CSS、 xmI、 shtml等格式的文件。
 
被压缩的纯文本文件必须要大于1KB,由于压缩算法的特殊原因,极小的文件压缩后可能反而变大。
 
图片、视频(流媒体)等文件尽量不要压缩,因为这些文件大多都是经过压缩的,如果再压缩很可能不会减小或减小得很少,甚至
还有可能增大,同时压缩时还会消耗大量的CPU、内存资源。
 
4.参数绍及配置说明

此压缩功能与早期Apache服务的mod_ deflate压缩功能很相似,Nginx的gzip压缩功能依赖于ngx_ http gzip module模块, 默认已安装。
 
对应的压缩参数说明如下:
 
#压缩配置
gzip on; #<==开启gzip压缩功能。
 
gzip_min_length 1k;
#<==设置允许压缩的最小页面字节数,
 
页面字节数从header头的Content-L ength中获取。默认值是0,表示不管页面多大都进行压缩。建议设置成大于1KB ,如果小于1KB可能会越压越大。
 
gzip_buffers4 16k;
#<==压缩缓冲区大小。
 
表示申请4个单位为16KB的内存作为压缩结果流缓存,默认值是申请与原始数据大小相同的内存空间来存储gzip压缩结果。
 
gzip_http_version 1.1;
#<==压缩版本(默认为1.1 ,前端为squid2.5时使用1.0 ),
 
用于设置识别HTTP协议版本,默认是1.1 ,目前大部分浏览器已经支持gzip解压,使用默认值即可。
 
gzip_comp_level 2;
#<==压缩比率。用来指定gzip压缩比,1表示压缩比最小,处理速度最快; 9表示压缩比最大,传输速度快,但处理最慢,也比较消耗CPU资源。
 
gzip_ types text/plain application/x-javascript text/css application/xml;
#<==用来指定压缩的类型, "text/html" 类型总是会被压缩,这个就是HTTP原理部分所讲的媒体类型。
 
gzip_ vary on;
#<==vary header支持。
 
该选项可以让前端的缓存服务器缓存经过gzip压缩的页面,例如用Squid缓存经过Nginx压缩的数据完整的配置如下:
 
gzip on;
gzip_ min_length 1k;
gzip_buffers 4 32k;
gzip_ http version 1.1;
gzip_ comp_level 9;
#gzip_types text/plain application/x-javascript text/css application/xml; 
#<==老的不正确写法
gzip_ types textIcss text/xml application/javascript;
gzip_ vary on;
 
不同的Nginx版本中, gzip_types的配置可能会有所不同,上述配置示例适合Nginx 1.6.3。对应的文件类型,请查看安装目录下的mime.types文件。
 

相关推荐:

sysVinit方式下系统的启动特点

systemd方式 下系统的启动特点

sysVinit的正常启动顺序详细解析教程

运维培训班的学员要明白开发同样重要

PHP运维常见问题以及解决办法

云计算运维工程师遇到php故障该如何处理

运维程序员如何做到对php业务监控和故障发现

运维工程师如何提升桌面云存储性能,有哪些方式?