开启gzip压缩之后会将传输数据进行压缩处理 ,这样就会减少网络传输的数据量,从而提高浏览速度。
编辑配置文件nginx.conf增加以下配置信息
gzip on;
gzip_min_length 5k;
gzip_buffers 4 16k;
gzip_comp_level 3;
gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-h ttpd-php image/jpeg image/gif image/png;
gzip_vary on;
gzip on|off;
是否开启gzip压缩模块,默认off
gzip on;
gzip_min_length
默认值0,不管多大都压缩,建议设置成1k以上, 1k以下越压越大
gzip_min_length 5k;
gzip_buffers
默认值4 4k/8k,设置系统获取几个单位的缓存用于存储gzip的压缩结果数据流。 例如 4 4k 代表以4k为单位,按照原始数据大小以4k为单位的4倍申请内存。 4 8k 代表以8k为单位,按照原始数据大小以8k为单位的4倍申请内存。如果没有设置,默认值是申请跟原始数据相同大小的内存空间去存储gzip压缩结果
gzip_buffers 4 16k;
gzip_comp_level
默认值1,1-9, 越高压缩时间越长, 传输快但耗CPU
gzip_comp_level 3;
gzip_types
默认值text/html, 需要压缩的MIME类型。关于MIME类型参考这里
gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-h ttpd-php image/jpeg image/gif image/png;
gzip_vary
和http头有关系,加个vary头,给代理服务器用的,有的浏览器支持压缩,有的不支持,所以避免浪费不支持的也压缩,所以根据客户端的HTTP头来判断,是否需要压缩
gzip_vary on;
测试JS文件是否开启gzip
curl -I -H "Accept-Encoding: gzip, deflate" "https://www.xiejiahe.com/static/js/vendor.762e0a63c9a56089f781.js"
压缩之前
HTTP/1.1 200 OK
Server: nginx/1.10.2
Date: Fri, 17 Nov 2017 06:01:13 GMT
Content-Type: application/javascript
Content-Length: 723436
Last-Modified: Wed, 15 Nov 2017 06:20:02 GMT
Connection: keep-alive
ETag: "5a0bdc92-b09ec"
Accept-Ranges: bytes
压缩之后
HTTP/1.1 200 OK
Server: nginx/1.10.2
Date: Fri, 17 Nov 2017 06:00:43 GMT
Content-Type: application/javascript
Last-Modified: Wed, 15 Nov 2017 06:20:02 GMT
Connection: keep-alive
Vary: Accept-Encoding
ETag: W/"5a0bdc92-b09ec"
Content-Encoding: gzip // 已压缩
这个JS大小是707KB 压缩后 221KB 可想而知开启gzip压缩后缩小了不少。