@
coolfan 从客户端普通用户视角来回答:
在 火狐里面 aoout:config 里面有个 security.tls.enable_certificate_compression_zstd 他默认是 true 。 既然有 TLS 了。所以得 HTTP2 了。
从行业规范的角度回答:
你发现 accept-encoding : 的写法顺序是 gzip, deflate, br, zstd 。很明显 不是 按照 字典排序法
各个浏览器社区、厂商团体、是按照
https://datatracker.ietf.org/doc/html/rfc8878 rfc 修订规则的时间先后顺序排序的。
规范规则有了,浏览器才会跟进支持的。
同理可得 在 Http1 时代 gzip rfc 规范早于 rfc8878 。
再同理可得 br 压缩的 rfc7932 要早于 zstd 的 rfc8878
其实 br 和 zstd 0.1 版本几乎是同年出生的。
从服务器应用层角度回答:
Apache httpd 服务器在近期才支持 zstd 压缩
https://github.com/foglede/mod_zstd (满血的可以 http1 支持的)
Ng 也是早前几个月才得到得 zstd 支持(截止到发贴时间,非满血版 security.tls.enable_certificate_compression_zstd = false 就乱码了,http1 支持不完整 )。
你猜测的是 兼容性问题。 我觉得也有道理,很多 IE6 IE7 IE11 [ gzip ] 不兼容情况也有 HTTP2 用 gzip 的也有乱码的。
所以这多者合力的情况下 导致了 一种错觉 http1 协议状态下没有 zstd 压缩。
——————————————
我最近也在研究这些,参考了很多文献和文档,全部手打的,分享给你,没有无脑问 AI ,AI 回答也没我这么详细。