feat(middleware): COMPRESSION_ALGORITHMS 默认值改为 off

未设置环境变量时不再默认启用全部压缩算法,改为默认关闭。显式设为
"all" 或具体算法组合仍可按需开启。

- src/middleware.rs: fallback 由 "all" 改为 "off",同步更新文档注释
  与默认值测试(compression_default_env_is_all → _is_off)
- .env.example: 示例值与说明同步更新
This commit is contained in:
xfy 2026-07-16 11:33:14 +08:00
parent 593c0322bc
commit 5b6cb7d796
2 changed files with 8 additions and 9 deletions

View File

@ -89,9 +89,10 @@ SSR_CACHE_SECS=3600
# HTTP 响应压缩算法。逗号分隔,大小写不敏感。
# 支持gzip、brotli可简写为 br、deflate、zstd。
# 示例值(四项全开)等价于 "all",也是不设环境变量时的默认。
# 默认关闭压缩(不设环境变量时等同 "off")。
# 设为 "all" 启用全部算法,或按需组合,例如 "gzip, brotli, zstd"。
# 用 "none" 或 "off" 关闭压缩。
COMPRESSION_ALGORITHMS=gzip,brotli,deflate,zstd
COMPRESSION_ALGORITHMS=off
# ─────────────────────────────────────────────────────────────
# 图片响应缓存头(硬编码默认值,非环境变量)

View File

@ -78,7 +78,8 @@ pub(crate) fn parse_compression_algorithms(env: &str) -> Option<CompressionAlgor
}
/// 根据 COMPRESSION_ALGORITHMS 环境变量构造 CompressionLayer。
/// 未设置或设置为 "all" 时启用全部算法;设置为 ""、"none" 或 "off" 时禁用。
/// 默认(未设置时)关闭压缩;显式设为 "all" 启用全部算法,设为 "gzip,brotli,..."
/// 按需选择;设为 ""、"none" 或 "off" 等价于不启用。
///
/// CompressionLayer 使用 tower-http 的 `DefaultPredicate`,开箱即用即:
/// - 跳过 `image/*` content-typeWebP/PNG/JPEG/GIF 等已是压缩格式,再压浪费 CPU
@ -91,7 +92,7 @@ pub(crate) fn parse_compression_algorithms(env: &str) -> Option<CompressionAlgor
pub(crate) fn compression_layer_from_env() -> Option<tower_http::compression::CompressionLayer> {
use tower_http::compression::CompressionLayer;
let env = std::env::var("COMPRESSION_ALGORITHMS").unwrap_or_else(|_| "all".to_string());
let env = std::env::var("COMPRESSION_ALGORITHMS").unwrap_or_else(|_| "off".to_string());
let algorithms = parse_compression_algorithms(&env)?;
Some(
@ -303,12 +304,9 @@ mod tests {
}
#[test]
fn compression_default_env_is_all() {
fn compression_default_env_is_off() {
// 模拟未设置环境变量时的默认值
assert_eq!(
parse_compression_algorithms("all"),
Some(CompressionAlgorithms::all_enabled())
);
assert_eq!(parse_compression_algorithms("off"), None);
}
#[test]