HOME/Articles/

nginx从入门到放弃-gzip压缩

Article Outline

nginx开启gzip压缩

关于gzip简介:

GZIP最早由Jean-loup Gailly和Mark Adler创建,用于UNⅨ系统的文件压缩。我们在Linux中经常会用到后缀为.gz的文件,它们就是GZIP格式的。现今已经成为Internet 上使用非常普遍的一种数据压缩格式,或者说一种文件格式。

HTTP协议上的GZIP编码是一种用来改进WEB应用程序性能的技术。大流量的WEB站点常常使用GZIP压缩技术来让用户感受更快的速度。这一般是指WWW服务器中安装的一个功能,当有人来访问这个服务器中的网站时,服务器中的这个功能就将网页内容压缩后传输到来访的电脑浏览器中显示出来.一般对纯文本内容可压缩到原大小的40%.这样传输就快了,效果就是你点击网址后会很快的显示出来.当然这也会增加服务器的负载. 一般服务器中都安装有这个功能模块的。

通过这个简介可以看到,通过开启gzip可以对网页的资源进行压缩,以实现更快的传输速度。

nginx中开启gzip

在nginx中,支持gzip压缩,同时,默认状态下gzip是关闭状态的。

以下为nginx配置文件:

 ##
        # Gzip Settings
        ##

        gzip on;   //开启状态,
        gzip_disable "msie6"; //对ie6禁用gzip压缩

        gzip_vary on;     //增加响应头”Vary: Accept-Encoding”
        gzip_proxied any; //一般在反向代理中启用,any参数代表无条件压缩所有结果数据
        gzip_comp_level 6; //设置gzip压缩级别,级别越底压缩速度越快文件压缩比越小,反之速度越慢文件压缩比越大
        gzip_buffers 16 8k; //设置用于处理请求压缩的缓冲区数量和大小。比如32 4K表示按照内存页(one memory page)大小以4K为单位(即一个系统中内存页为4K),申请32倍的内存空间。建议此项不设置,使用默认值。
        gzip_http_version 1.1; //用于识别http协议的版本,早期的浏览器不支持gzip压缩,用户会看到乱码,所以为了支持前期版本加了此选项。默认在http/1.0的协议下不开启gzip压缩。
        gzip_types text/plain text/css application/json application/javascript text/xml         application/xml application/xml+rss text/javascript;
//设置需要压缩的MIME类型,如果不在设置类型范围内的请求不进行压缩

其实这些配置文件在nginx中都是存在的,只是默认注释掉,如果想要开启gzip的压缩,把相关的注释信息删除掉,根据处理器和带宽调整一下压缩级别,基本上就可以了。

实际测试:

在 2G内存,1M带宽的服务器测试结果如下:

微信图片_20200216164349.png

微信图片_20200216164403.png

在chrome浏览器中,访问网页,禁用缓存,所有资源(js,html等)共1.9MB,

在未开启gzip情况下,传输量为 1.9Mb,完整加载整个页面用时9.09s,

在开启gzip情况下,传输量为 501KB,完整加载整个页面用时1.93秒,通过这个简单测试,可以看出开启gzip压缩的情况下,提升非常明显。