这篇文章主要说下 使用nginx gzip 压缩来提升网站响应速度。
先看一下,这里我的一个示例网站,在没有启用nginx 压缩前的一个相应速度。
注:这是一个页游网站开源项目,仅用于学习使用。可以看到整个网站内容加载出来花了不少时间。
先附上nginx gzip 压缩的官方文档地址:http://nginx.org/en/docs/http/ngx_http_gzip_module.html。我这里配置主要也是参考自官方文档。
nginx 的gzip 压缩可以配置在http ,server ,location 段。
首先说下我这里nginx 的一个配置情况,nginx/1.14.2稳定版本,配置了虚拟主机( 主要是在nginx.conf 中加多一行配置而已 ),所以我这里针对配置在虚拟主机的配置项内,如果没有设置虚拟主机也不要紧,下面的配置方法同样适用!!!。
主要配置项:
#gzip config
gzip on; # 开启压缩
gzip_buffers 32 4k;
gzip_comp_level 6; # 压缩等级,默认1
gzip_min_length 4000; # 压缩最小长度
gzip_types text/css text/xml application/x-javascript;
gzip_vary on;
重新加载nginx 配置
nginx -s reload
然后强制刷新,我们这里的示例网站
可以看到传送到浏览器的部分js,css文件比未压缩前小了很多。
浏览器请求头
Accept-Encoding:表示可接受的压缩算法。
服务器响应头信息
Content-Encoding:表示返回的数据的压缩算法。
将传输的数据进行压缩,能提高请求的返回相应速度,也能节省带宽。
nginx gzip 配置讲解:
- gzip on|off; #是否开启gzip
- gzip_buffers 32 4K| 16 8K #缓冲(压缩在内存中缓存几块? 每块多大?)
- gzip_comp_level [1-9] #推荐6 压缩级别(级别越高,压的越小,越浪费CPU计算资源)
- gzip_disable regex #正则匹配UA 什么样的url不进行gzip
- gzip_http_version 1.0|1.1 # 开始压缩的http协议版本(可以不设置,目前几乎全是1.1协议)
- gzip_min_length 200 # 开始压缩的最小长度
- gzip_proxied # 设置请求者代理服务器,该如何缓存内容
- gzip_types mime-type # 对哪些类型的文件用压缩
- gzip_vary on|off # 是否传输gzip压缩标志
mime-type 类型可选值可以具体查看 mime.types 文件内容。
注意:图片/MP3 等二进制文件不建议进行压缩,压缩比小,但又比较浪费CPU 资源!