Expand description
HTTP 响应压缩:COMPRESSION_ALGORITHMS 配置、Accept-Encoding 协商、编码器与动态压缩中间件。
协商与跳过规则沿用 tower-http 0.7 的 CompressionLayer。动态响应由 compress 现压;
SSR HTML 缓存命中时按同一协商挑选预压缩变体(ssr_cache)。
Structs§
- Compress
Stream 🔒 - Compression
Algorithms 🔒 - 压缩算法配置。
- Encoder 🔒
- 同步编码器:增量写入,
finish收尾;输出追加到调用方的 Vec。
Enums§
Constants§
- BUFFER_
LIMIT 🔒 - 动态压缩的缓冲上限:长度未知的正文在此之内结束时按总长收窄 brotli 窗口,超过后转流式。
Statics§
Functions§
- add_
vary 🔒 - algorithms 🔒
- 进程内生效的压缩配置(默认关闭);进程启动后不变,改环境变量需重启。
- brotli_
window 🔒 - brotli 默认窗口 4 MiB(lgwin 22)。流式编码不知道总长时环形缓冲区按窗口整块分配并清零, 超过约 64 KiB 的页面每次都要清 4 MiB;长度已知时取刚好容纳整段输入的窗口,压缩结果不变。 下限 18:q7 在 lgwin 16 时换用另一种哈希,33 KB 的首页反而慢 4 倍(0.54 → 2.2 ms)。
- compress 🔒
- 动态响应压缩中间件(
axum::middleware::from_fn)。跳过规则同 tower-http 的DefaultPredicate: - dynamic_
encoder 🔒 - encode 🔒
- 一次性压缩整段输入;identity 返回 None。
- negotiate 🔒
- 按
Accept-Encoding选出响应编码;返回 None 表示客户端连 identity 都拒绝(应回 406)。 - parse_
compression_ 🔒algorithms - 解析 COMPRESSION_ALGORITHMS 环境变量值。 “”、“none”、“off” 返回 None;“all” 或未识别到任何算法时启用全部。
- parse_
qvalue 🔒 - RFC 9110 §5.3.1 的 q 值,按千分比存为 0..=1000;格式不合法返回 None。
- should_
compress 🔒