gzip、brotli、zstd:压缩不是越大越好
nginx 默认 gzip_comp_level 1,很多人改成 9,觉得越小越好。实测一个 40KB 的 HTML:级别 1 压到 9.8KB,级别 9 压到 9.1KB,差 7%,CPU 时间差三倍。
对静态文件更好的做法是预压缩:构建时生成 .gz 和 .br,nginx 用 gzip_static on 直接发,运行时零成本。Brotli 对文本通常比 gzip 小 15%–20%,但压缩慢,适合预生成,不适合 brotli on 动态压。
还有个坑:已经压缩过的内容(JPEG、PNG、mp4、zip)再压一遍基本没收益,还会白烧 CPU。按 MIME 类型排除掉:gzip_types 只列文本类即可。