Nginx性能优化功能- Gzip压缩(大幅度提升页面加载速度)

 

Nginx开启Gzip压缩功能, 可使网站的css、js 、xml、html 文件在传输时进行压缩,提升访问速度, 进而优化Nginx性能!  Web网站上的图片,视频等其它多媒体文件以及大文件,由于压缩效果很差,因此对于图片没有必要支压缩,若是想要优化,能够图片的生命周期设置长一点,让客户端来缓存。 开启Gzip功能后,Nginx服务器会根据配置的策略对发送的内容, 如css、js、xml、html等静态资源进行压缩, 使得这些内容大小减小,在用户接收到返回内容以前对其进行处理,以压缩后的数据展示给客户。这样不只能够节约大量的出口带宽,提升传输效率,还能提高用户快的感知体验, 一箭双雕; 尽管会消耗必定的cpu资源,可是为了给用户更好的体验仍是值得的。javascript

通过Gzip压缩后页面大小能够变为原来的30%甚至更小,这样,用户浏览页面的时候速度会快得多。Gzip 的压缩页面须要浏览器和服务器双方都支持,实际上就是服务器端压缩,传到浏览器后浏览器解压并解析。浏览器那里不须要咱们担忧,由于目前的巨大多数浏览器 都支持解析Gzip过的页面。php

Gzip压缩做用:将响应报⽂发送⾄客户端以前能够启⽤压缩功能,这可以有效地节约带宽,并提⾼响应⾄客户端的速度。Gzip压缩能够配置http,server和location模块下。Nginx开启Gzip压缩功能的配置以下:css

#修改nginx配置文件 /usr/local/nginx/conf/nginx.conf
[root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf        #将如下配置放到nginx.conf的http{ ... }节点中

#修改配置为
gzip on;                    #开启gzip压缩功能
gzip_min_length 10k;         #设置容许压缩的页面最小字节数; 这里表示若是文件小于10个字节,就不用压缩,由于没有意义,原本就很小. 
gzip_buffers 4 16k;         #设置压缩缓冲区大小,此处设置为4个16K内存做为压缩结果流缓存
gzip_http_version 1.1;      #压缩版本
gzip_comp_level 2;   #设置压缩比率,最小为1,处理速度快,传输速度慢;9为最大压缩比,处理速度慢,传输速度快; 这里表示压缩级别,能够是0到9中的任一个,级别越高,压缩就越小,节省了带宽资源,但同时也消耗CPU资源,因此通常折中为6
gzip types text/css text/xml application/javascript;      #制定压缩的类型,线上配置时尽量配置多的压缩类型!
gzip_disable "MSIE [1-6]\.";       #配置禁用gzip条件,支持正则。此处表示ie6及如下不启用gzip(由于ie低版本不支持)
gzip vary on;    #选择支持vary header;改选项可让前端的缓存服务器缓存通过gzip压缩的页面; 这个能够不写,表示在传送数据时,给客户端说明我使用了gzip压缩

 线上使用的Gzip压缩配置html

[root@external-lb02 ~]# cat /data/nginx/conf/nginx.conf
........
http {
.......
    gzip  on;
    gzip_min_length  1k;
    gzip_buffers     4 16k;
    gzip_http_version 1.1;
    gzip_comp_level 9;
    gzip_types       text/plain application/x-javascript text/css application/xml text/javascript application/x-httpd-php application/javascript application/json;
    gzip_disable "MSIE [1-6]\.";
    gzip_vary on;

}

若是不开启Gzip压缩功能(即注释掉Gzip的相关配置), 查看某个图片大小前端

[root@external-lb02 ~]#  ll  -h /data/web//www/test.bmp 
-rw-r--r-- 1 root root 453K 3月  14 18:43 /data/web//www/test.bmp

以下可知, 文件没有被压缩,文件传输大小仍是400多Kjava

若是开启Nginx的Gzip压缩功能(即打开Gzip的相关配置), 而后再次访问test.bmp图片, 发现压缩后的该图片文件传输大小只有200多K !nginx

经过上面测试对比, 发现Nginx开启Gzip压缩功能后, 定义的gzip type的文件在传输时的大小明显变小, 这样这会大大提升nginx访问性能. web

直接用curl测试命令:算法

[root@fvtlb02 ~]# curl -I -H "Accept-Encoding: gzip, deflate" "http://fvtvfc-web.kevin.com/service-worker.js"
HTTP/1.1 200 OK
Server: nginx/1.12.2
Date: Mon, 26 Nov 2018 02:19:16 GMT
Content-Type: application/javascript; charset=utf-8
Connection: keep-alive
Vary: Accept-Encoding
Last-Modified: Sun, 25 Nov 2018 22:28:15 GMT
Vary: Accept-Encoding
ETag: W/"5bfb21ff-40be"
Content-Encoding: gzip

如上,response header头信息中出现"Conten_Encoding: gzip" , 就说明Nginx已开启了压缩 (在浏览器访问, 经过F12看请求的响应头部 也是同样)

Nginx的Gzip压缩功能虽然好用,可是下面两类文件资源不太建议启用此压缩功能。
1) 图片类型资源 (还有视频文件)
缘由:图片如jpg、png文件自己就会有压缩,因此就算开启gzip后,压缩前和压缩后大小没有多大区别,因此开启了反而会白白的浪费资源。(能够试试将一张jpg图片压缩为zip,观察大小并无多大的变化。虽然zip和gzip算法不同,可是能够看出压缩图片的价值并不大)json

2) 大文件资源缘由:会消耗大量的cpu资源,且不必定有明显的效果。

相关文章
相关标签/搜索