开启Gzip压缩可使HTML体积减小60%~80%,需确认Nginx支持gzip模块,配置gzip on、gzip_types text/html等关键参数,并验证响应头含Content-Encoding: gzip和Vary: Accept-Encoding。

开启 Gzip 压缩能让 HTML 静态页面体积显著减小(通常压缩率 60%~80%),浏览器解压几乎无感知,是提升首屏加载速度最简单有效的手段之一。关键不是“开不开”,而是“开得对不对”。
确认 Nginx 已编译支持 Gzip 模块
大多数官方预编译包默认已启用 http_gzip_static_module 和 http_gunzip_module,但需验证:
- 执行 nginx -V 2>&1 | grep -o with-http_gzip_static_module,有输出即支持
- 若无,需重新编译 Nginx 并添加 --with-http_gzip_static_module
- 注意:gzip_static on 是可选优化项,用于直接提供预压缩的 .gz 文件,非必需但推荐配合使用
在 server 或 http 块中正确配置 Gzip 参数
仅加 gzip on 不够,需组合关键指令才能对 HTML 生效:
- gzip on; —— 启用压缩(必须)
- gzip_types text/html text/plain text/css application/javascript application/json; —— 显式包含 text/html,否则默认不压缩 HTML(Nginx 默认只压 text/plain)
- gzip_vary on; —— 让响应头带 Vary: Accept-Encoding,避免 CDN 或代理缓存未压缩版本
- gzip_min_length 1024; —— 小于 1KB 的文件不压缩(避免 CPU 白耗,HTML 一般远超此值)
- gzip_comp_level 6; —— 推荐 5~6 级,兼顾压缩率与 CPU 开销(9 级太重,3 级压缩率偏低)
验证 HTML 是否真正被压缩
别只看配置是否生效,要实测响应头和内容:
立即学习“前端免费学习笔记(深入)”;
- 用浏览器开发者工具 → Network → 刷新 HTML 页面 → 查看该请求的 Response Headers
- 确认存在 Content-Encoding: gzip 和 Vary: Accept-Encoding
- 对比 Content-Length 与原始 HTML 文件大小(可用 curl -H "Accept-Encoding: gzip" -I your-site.com/index.html 快速检查)
- 若没生效,常见原因:gzip_types 缺少 text/html、location 块中覆盖了上级 gzip 配置、HTTPS 下未配全兼容参数(一般无需额外操作)
进阶建议:配合 gzip_static 提供预压缩文件
对静态 HTML,提前生成 .gz 文件可降低实时压缩开销:
- 用 gzip -k -f -9 index.html 生成 index.html.gz
- 在 Nginx 配置中添加 gzip_static on;(放在 gzip on; 同级)
- Nginx 会优先查找同名 .gz 文件并直接返回,跳过运行时压缩
- 注意:需确保 .gz 文件权限与 HTML 一致,且修改 HTML 后要同步更新 .gz 文件











