能被gzip压缩的对象
纯文本如:html ,js ,css,xml,shtml等格式文件,纯文本必须大于1kb,由于算法原因极小的文件压缩可能变大
图片,视频(流媒体)文件不要压缩,因为这些文件大多已经压缩过,可能不会减小或减小很少,或者可能增大,而在压缩时还会消耗大量的CPU,内存等资源
gzip压缩依赖于ngx_http_gzip_module
模块,默认安装就带,所以不用自己安装。
nginx配置
gzip on; #开启gzip压缩输出
gzip_min_length 1k; #最小压缩文件大小
gzip_buffers 4 16k; #压缩文件缓冲区 4个单位为16k的结果流缓存
gzip_http_version 1.0; #压缩等级 1压缩比最小,9压缩级别最大
gzip_comp_level 2; #压缩版本(默认1.1,前端如果是squid2.5请使用1.0)
gzip_types text/plain application/javascript application/css text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png; #指定压缩类型 参考 mine.types
gzip_vary off; #on表示让前端的缓存服务器,可以缓存gzip出来的页面,不解压
gzip_disable "MSIE [1-6]\.";
测试命令
curl -I -H "Accept-Encoding: gzip, deflate" "https://www.yepk.cn/source/js/bundle.js"
测试结果(需要出现Content-Encoding: gzip)
HTTP/1.1 200 OK
Server: nginx/1.17.9
Date: Mon, 20 Jul 2020 00:54:40 GMT
Content-Type: application/javascript
Connection: keep-alive
Access-Control-Allow-Headers: Content-Type,ADMIN-Authorization,API-Authorization
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Last-Modified: Mon, 29 Jun 2020 01:19:24 GMT
Access-Control-Allow-Credentials: true
Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS
Access-Control-Max-Age: 3600
Content-Encoding: gzip