nginx开启gzip压缩

2017-11-17 · xiejiahe

开启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压缩后缩小了不少。

服务器
原创文章,转载请注明出处。