预压缩静态文件,运行时零成本
动态压缩要占 CPU,静态文件其实可以在构建时压好。
gzip -9 -k assets/*.css assets/*.js
nginx:
gzip_static on;
请求 app.css 时,如果同目录有 app.css.gz,直接发压缩版本,CPU 成本为零。gzip_static always; 表示即使客户端不支持也发——一般不用,除非你确定所有客户端都支持。
配合 Vary: Accept-Encoding 和正确的 Content-Encoding,缓存层才不会串。
Brotli 同理,brotli_static on;,需要模块支持。预压缩的 .br 通常比 .gz 再小 15%,对首屏有实际意义。
注意构建流程要包含这一步,否则部署了新版本却忘了压,nginx 找不到 .gz 就回落到原文件——不会报错,只是白优化。