You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何基于mod_deflate为zstd配置Brotli作为Safari不支持时的降级方案?

实现zstd优先、Brotli降级的Apache配置方案

可以通过Apache的mod_setenvif模块检测浏览器的Accept-Encoding请求头,结合环境变量实现压缩算法的自动降级。具体配置步骤如下:

1. 配置环境变量(检测浏览器支持情况)

首先添加环境变量判断逻辑,识别浏览器是否支持zstd或Brotli:

# 标记支持zstd的浏览器
SetEnvIf Accept-Encoding "zstd" use_zstd
# 仅当不支持zstd时,标记支持Brotli的浏览器
SetEnvIf Accept-Encoding "br" !use_zstd use_br

2. 针对目标文件设置动态压缩过滤器

替换你现有的Brotli配置,根据环境变量选择对应的压缩算法:

<IfModule mod_zstd.c>
    <filesMatch "\.(js|css|html|php|svg|woff|woff2|ico|json|geojson|pbf)$">
        # 优先使用zstd;不支持则用Brotli;都不支持 fallback 到gzip(可选)
        SetOutputFilter expr=%{ENV:use_zstd} ? ZSTD_COMPRESS : (%{ENV:use_br} ? BROTLI_COMPRESS : DEFLATE)
    </filesMatch>
</IfModule>

关键注意事项

  • 确保你的共享主机已加载mod_setenvif、mod_zstd和支持Brotli的模块(你的现有配置用了mod_deflate的BROTLI_COMPRESS,说明该模块已启用)。
  • 测试验证:
    • 模拟支持zstd的浏览器请求:curl -H "Accept-Encoding: zstd, br" -I https://你的域名/测试文件.js,响应头应返回Content-Encoding: zstd。
    • 模拟Safari(不支持zstd)的请求:curl -H "Accept-Encoding: br, gzip" -I https://你的域名/测试文件.js,响应头应返回Content-Encoding: br。

内容的提问来源于stack exchange,提问作者obs

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 13:31:13