优化实战 第 70 期 - 资源压缩

89 阅读1分钟

文本文件压缩

  • 启用 Gzip 压缩

    http {
      gzip on; # 开启压缩
      gzip_types text/plain text/css application/javascript application/json image/svg+xml; # 指定压缩的文件类型(文本、CSS、JS、JSON)
      gzip_min_length 1024; # 仅压缩大于 1KB 的文件,避免小文件压缩带来的开销
      gzip_comp_level 6; # 压缩级别(1-9,越大压缩率越高但 CPU 占用更高)
    }
    

    低配置服务器 👉 选 Gzip(兼容性好,CPU 占用低)。

  • 启用 Brotli 压缩

    http {
      brotli on; # 开启压缩
      brotli_comp_level 6; # 压缩级别(1-11,6 是推荐值,平衡速度和压缩率)
      brotli_types text/plain text/html text/css application/javascript application/json image/svg+xml;
    }
    

    CDN / 现代服务器 👉 选 Brotli(压缩率更高)。

  • 验证是否启用压缩

    如果资源的响应头 Content-Encoding 的值是 brgzip 则表示已经启用了压缩。

  • 最佳实践

    同时开启 BrotliGzip,允许浏览器按支持情况自动选择。

    压缩方式支持情况压缩率解压速度服务器支持
    Gzip所有浏览器60-80%Nginx、Apache、Node.js、CDN
    Brotli现代浏览器 (Chrome 49+, Edge 15+, Firefox 44+)更高(80-90%)Nginx、Apache、Cloudflare、Node.js
    http {
      # 允许浏览器按支持情况选择 Brotli 或 Gzip
      gzip_vary on;
    }
    

    当浏览器请求资源时,它会发送 Accept-Encoding 头告诉服务器它支持哪些压缩格式