压缩策略不直接提升长连接的“连接”效能,但通过缩短响应时间、减少传输体积、加快ttfb,使长连接更高效复用;需精准启用gzip/brotli、设置最小长度与合理压缩级别、开启vary头,并协同优化tcp和keepalive参数。

压缩策略本身不直接提升长连接的“连接”效能,但它能显著缩短单次请求的响应时间、减少传输体积、加快首字节到达(TTFB),从而让长连接更高效地复用——单位时间内完成更多请求,降低连接建立频次和资源开销。
精准启用压缩,避免无效消耗
只对可压缩且收益高的文本类资源启用压缩,避开已压缩格式(如 JPG、PNG、MP4),防止 CPU 白耗:
- 启用 Gzip:
gzip on;,并指定类型:gzip_types text/css application/javascript text/html application/json; - 推荐使用 Brotli(Nginx ≥1.13.6):
brotli on; brotli_types text/css application/javascript;,压缩率比 Gzip 高 15%–20% - 设置最小压缩长度:
gzip_min_length 500;(或brotli_min_length 20;),跳过极小响应体,避免压缩开销反超收益
控制压缩强度与资源平衡
高压缩比(如 level 9)对 CPU 压力大,而长连接场景下 worker 进程需持续处理多路请求,CPU 成为关键瓶颈:
- Gzip 推荐设为
gzip_comp_level 6;,兼顾体积缩减(约 70%)与 CPU 占用 - Brotli 可设为
brotli_comp_level 8;,其算法更高效,level 8 已接近压缩极限,再升 level 9–11 提升微乎其微 - 始终开启
gzip_vary on;或brotli_vary on;,确保 CDN 或浏览器缓存能区分压缩/未压缩版本,避免缓存错乱
配合长连接参数协同优化
压缩生效的前提是请求能快速进入处理流程,而长连接稳定性依赖合理的超时与缓冲策略:
- 启用
tcp_nodelay on;:禁用 Nagle 算法,尤其对小包响应(如 API 返回 JSON)降低延迟,让压缩后的数据更快发出 - 保持
keepalive_timeout 45s;:比默认 75s 更激进,避免连接空闲过久占用内存,同时仍足够支撑多数复用场景 - 增大
keepalive_requests 1000;:单连接承载更多请求,压缩带来的体积下降在此被放大——每多复用一次,就少一次压缩+传输开销
验证与调优依据
压缩是否真正起效,不能只看配置,要结合真实响应头与体积变化判断:
- 用浏览器 DevTools 的 Network 标签页检查响应头:确认含
Content-Encoding: gzip或br - 对比压缩前后 size 和 transfer 字段:理想情况下文本类资源体积下降 60%–80%
- 监控 Nginx 的
gzip_ratio变量(需开启 stub_status)或日志中$gzip_ratio,识别低收益路径(如 ratio











