Skip to main content

Module compression

Module compression 

Source
Expand description

HTTP 响应压缩:COMPRESSION_ALGORITHMS 配置、Accept-Encoding 协商、编码器与动态压缩中间件。

协商与跳过规则沿用 tower-http 0.7 的 CompressionLayer。动态响应由 compress 现压; SSR HTML 缓存命中时按同一协商挑选预压缩变体(ssr_cache)。

Structs§

CompressStream 🔒
CompressionAlgorithms 🔒
压缩算法配置。
Encoder 🔒
同步编码器:增量写入,finish 收尾;输出追加到调用方的 Vec。

Enums§

Effort 🔒
压缩力度。
Encoding 🔒
内容编码,变体按偏好从低到高排列:同 q 值时 zstd > br > gzip > deflate > identity。
Stage 🔒

Constants§

BUFFER_LIMIT 🔒
动态压缩的缓冲上限:长度未知的正文在此之内结束时按总长收窄 brotli 窗口,超过后转流式。

Statics§

ALGORITHMS 🔒

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 🔒