要想提高页面加载速度,配置压缩是必不可少的。项目中的一些大的库或者图片等等,通过压缩,体积能减少40%或者更多。最直观的体验就是请求时间大幅降低。
刚开始
我的页面加载了两个动画库,所以请求速度很慢很慢,导致页面阻塞,白屏时间过长,如下:
可以看到,three.min.js 这个文件,加载时间居然使用了 3.94s
!!! 是导致白屏的罪魁祸首,所以要解决掉
解决方法
打开 Nginx 服务器配置文件
vim /usr/local/nginx/conf/nginx.conf
修改配置如下:
代码:
gzip on;
gzip_min_length 1k;
gzip_buffers 4 16k;
gzip_http_version 1.0;
gzip_comp_level 8;
gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;
gzip_vary off;
gzip_disable "MSIE [1-6]\.";
gzip
: 该指令用于开启或 关闭gzip模块。gzip_buffers
: 设置系统获取几个单位的缓存用于存储gzip的压缩结果数据流。gzip_comp_level
: gzip压缩比,压缩级别是1-9,1的压缩级别最低,9的压缩级别最高。压缩级别越高压缩率越大,压缩时间越长。gzip_disable
: 可以通过该指令对一些特定的User-Agent不使用压缩功能。gzip_min_length
:设置允许压缩的页面最小字节数,页面字节数从相应消息头的Content-length中进行获取。gzip_http_version
:识别HTTP协议版本,其值可以是1.1.或1.0.gzip_proxied
: 用于设置启用或禁用从代理服务器上收到相应内容gzip压缩。gzip_vary
: 用于在响应消息头中添加Vary:Accept-Encoding,使代理服务器根据请求头中的Accept-Encoding识别是否启用gzip压缩。gzip_types
对特定的MIME类型生效,其中’text/html’被系统强制启用
修改完成之后,:wq
保存退出。
重新启动服务器:
/usr/local/nginx/sbin/nginx -s reload
结果
重新访问页面
从刚开始的 3.94s
,现在只要 367ms
,速度整整提高了差不多10倍!!!再看看返回的头部类型
当然你的不一定会提高这么多,但是肯定会是一个优化的很好的方式。
现在打开基本在1s以内。
注:
gzip是需要服务器和浏览器同时支持的。当浏览器支持gzip压缩时,会在请求消息中包含Accept-Encoding:gzip,这样Nginx就会向浏览器发送听过gzip后的内容,同时在相应信息头中加入Content-Encoding:gzip,声明这是gzip后的内容,告知浏览器要先解压后才能解析输出。
目前的主流浏览器基本都是支持的(IE6以下不支持)!
最后,像这样的库的话,也可以使用 cdn 去引入,这也是另一种优化的方法!