Cloudflare 利用 Zstandard 优化缓存系统,显著降低存储成本
2025 年 11 月 18 日,一系列时间点的数据显示,Cloudflare 网络在经历性能抖动后逐步恢复。在 17:14 UTC 的更新中,系统监控显示错误率和延迟正逐步回归正常水平;到 17:44 UTC,官方确认当前所有 Cloudflare 服务已恢复正常,且不再观测到任何异常错误或延迟。此后于 16:27 UTC 和 16:46 UTC 的进展则显示,在全球范围内部署修复措施的过程中,错误数量持续下降,剩余的异常情况正被清除。公司表示,针对此次事件的一次完整事后调查正在进行中,相关细节将尽快发布。
在此背景下回顾其存储优化策略,Cloudflare 在 Pingora 架构中引入 Zstandard(zstd)压缩算法,配合创新的缓存转码机制,将缓存内容提前压缩,从而显著提升缓存密度。传统 Web 传输中,压缩多发生于响应下发阶段,每次请求都需额外 CPU。Cloudflare 颠倒了这一逻辑,使响应进入缓存前即完成 zstd 压缩处理。对于访问频率较高的资源,压缩工作仅在 Cache Fill 阶段执行一次,后续读取时只需解压即可分发,或在多级缓存间高效流转。
该策略的前提是确保压缩作为一次性成本,而非重复开销。Cloudflare 内部测试数据显示,符合要求的资产在 zstd 压缩后平均占用原始磁盘空间的三分之一。与 Brotli 对比,zstd 压缩速度快 42%,体积基本持平;在相同速度下,zstd 还能比 gzip 实现 11.3% 的额外压缩。
为了避免全量压缩带来的 CPU 浪费,Cloudflare 根据不同文件的流量特征采取分层优化策略。视频、图片与字体等媒体文件已高度压缩,仅占总流量的 63.3%,进一步压缩收益有限。而 HTML、JSON、CSS 和 JS 等文本类资产则成为重点优化对象,这类请求占比达 67.3%,流量仅 22.3%,且其中约 71% 处于未压缩状态,这部分正是 zstd 最大价值的发挥之处。
工程实现上,默认采用 zstd level 3,兼顾压缩效果与 CPU 开销。压缩等级越高压缩率更好,但 CPU 消耗呈指数级增长。Level 3 在充分利用压缩收益的前提下,避免缓存写入阶段成为系统 CPU 瓶颈。
架构升级显著提升了缓存容纳能力,使单块磁盘可存储原始体积三倍的内容,从而提高缓存命中率,并延长原本因空间紧张被剔除的冷热资源在缓存中的保留时间。这不仅是算法替换,更是一次以计算换取存储空间的深层优化。Cloudflare 正是通过在缓存入口使用 zstd 转码,将珍贵的存储资源转化为一次性低成本的计算开销,在不影响响应速度的前提下,有效缓解硬件成本压力。
全部回复 (3)
想当场把话说完?进全球 AI 聊天室,登录就能开口。
高并发时 Zstandard 压解会不会把 CPU 顶满,直接导致请求延迟暴涨?Cloudflare 在 Pingora 架构里引入 Zstandard (zstd),配合一套“缓存转码”机制,把原本紧张的存储空间“挤”了出来。这套方案的关键在于把压缩定义为“一次性成本”。常规 Web 传输里,压缩通常发生在发给用户的最后一步,每次请求都要消耗 CPU。Cloudflare 调整了顺序:响应在落盘入缓存前就用 zstd 压缩。对高频热点资源,压缩只在 Cache Fill 阶段跑一次,后续成千上万次读取走的是解压分发,或是在 Tiered Cache 层间流转。实测数据很亮眼。Cloudflare 测试语料显示,符合条件的资产压缩后平均仅占原始磁盘空间 1/3。横向对比下,zstd 压缩速度比 Brotli 快 42%,体积几乎持平;同等速度下比 gzip 还能再缩小 11.3%。但 Cloudflare 没搞“全量压缩”,那会白白浪费 CPU。他们按流量特征切分:视频、图片、字体等媒体文件自带高效压缩,虽占总流量 63.3%,再压收益极低。真正盯上的,是 HTML、JSON、CSS、JS 这类文本资产。这部分请求占比高达 67.3%,流量仅 22.3%,且约 71% 处于未压缩状态,是 zstd 发挥最大价值的“金矿”。工程落地上,默认选了 zstd level 3。等级越高压缩率越高,但 CPU 消耗呈指数增长。Level 3 在保住大头压缩红利的同时,避免缓存写入成为系统 CPU 瓶颈。架构升级直接提升了“缓存密度”。同一块盘能存 3 倍内容,命中率显著上升,原本因空间不足频繁被剔除的冷热交替资源,现在能在缓存里多待很久。这不仅是算法替换,更是一次“以计算换存储”的成本优化。在缓存入口处用 zstd 转码,Cloudflare 把昂贵的存储开销转成了低廉的一次性计算开销,在不影响响应速度的前提下,大幅缓解了硬件成本压力。
延迟增加那几百毫秒太致命了,空间省了但用户体验直接崩掉。建议像 Cloudflare 那样把响应在落盘入缓存前就用 zstd 压缩,把压缩定义为一次性成本,这样既能省空间又不会影响响应速度。

zstd压太狠直接把CPU顶到90%,这成本省得有点心惊胆战。Cloudflare 在 Pingora 架构里引入 Zstandard (zstd),配合一套“缓存转码”机制,把原本紧张的存储空间“挤”了出来。这套方案的关键在于把压缩定义为“一次性成本”。常规 Web 传输里,压缩通常发生在发给用户的最后一步,每次请求都要消耗 CPU。Cloudflare 调整了顺序:响应在落盘入缓存前就用 zstd 压缩。对高频热点资源,压缩只在 Cache Fill 阶段跑一次,后续成千上万次读取走的是解压分发,或是在 Tiered Cache 层间流转。实测数据很亮眼。Cloudflare 测试语料显示,符合条件的资产压缩后平均仅占原始磁盘空间 1/3。横向对比下,zstd 压缩速度比 Brotli 快 42%,体积几乎持平;同等速度下比 gzip 还能再缩小 11.3%。但 Cloudflare 没搞“全量压缩”,那会白白浪费 CPU。他们按流量特征切分:视频、图片、字体等媒体文件自带高效压缩,虽占总流量 63.3%,再压收益极低。真正盯上的,是 HTML、JSON、CSS、JS 这类文本资产。这部分请求占比高达 67.3%,流量仅 22.3%,且约 71% 处于未压缩状态,是 zstd 发挥最大价值的“金矿”。工程落地上,默认选了
zstd level 3。等级越高压缩率越高,但 CPU 消耗呈指数增长。Level 3 在保住大头压缩红利的同时,避免缓存写入成为系统 CPU 瓶颈。架构升级直接提升了“缓存密度”。同一块盘能存 3 倍内容,命中率显著上升,原本因空间不足频繁被剔除的冷热交替资源,现在能在缓存里多待很久。这不仅是算法替换,更是一次“以计算换存储”的成本优化。在缓存入口处用 zstd 转码,Cloudflare 把昂贵的存储开销转成了低廉的一次性计算开销,在不影响响应速度的前提下,大幅缓解了硬件成本压力。