概述Brotli与Zstd具备更高压缩比与更优速度,结合内容协商选择合适编码与阈值,减少传输体积与首屏时间。关键实践与参数协商: 按 `Accept-Encoding` 选择 `br` 或 `zstd` 或 `gzip`阈值: 仅对大于 `1KB` 的文本资源启用压缩白名单: `text/html` `text/css` `application/javascript` 等缓存: 按编码维度缓存并设置 `Vary: Accept-Encoding`示例/配置/实现gzip on; gzip_types text/plain text/css application/javascript application/json; brotli on; brotli_types text/plain text/css application/javascript application/json; add_header Vary Accept-Encoding; import zlib from 'zlib' function negotiate(req, res, body) { const ae = req.headers['accept-encoding'] || '' if (ae.includes('br')) zlib.brotliCompress(body, (_, buf) => { res.setHeader('Content-Encoding', 'br'); res.end(buf) }) else if (ae.includes('zstd')) res.end(body) else if (ae.includes('gzip')) zlib.gzip(body, (_, buf) => { res.setHeader('Content-Encoding', 'gzip'); res.end(buf) }) else res.end(body) } 验证体积与延迟: 在支持Brotli的客户端观察传输体积与TTFB下降协商正确: 不同编码下返回头与体积匹配缓存命中: 设定 `Vary` 后缓存命中率提升兼容回退: 不支持时回退到原始或Gzip注意事项动态内容需评估压缩CPU开销资源已压缩(如图片、视频)不再压缩维持编码维度的缓存键一致与CDN协商策略一致

发表评论 取消回复