写点什么

Cloudflare 测试通过缓存转码来减少存储需求

作者:Renato Losio
  • 2026-09-23
    北京
  • 本文字数:1112 字

    阅读完需:约 4 分钟

AI摘要

Cloudflare 提出“缓存转码”原型,在内容首次入缓存时用 Zstandard 压缩未压缩文本(HTML/JSON/CSS/JS),解压仅在服务时发生,实现单次编码、多次收益。实测压缩率约 64%,可释放 PB 级有效缓存容量并降低跨数据中心传输量。该方案依托 Pingora(Rust 实现)集成 Zstandard,编码开销极低。

Zstandard 在首次缓存写入时完成单次无损压缩,兼顾速度与压缩率

压缩后数据复用无需重复编码,持续节省存储与带宽成本

基于 Pingora 的 Rust 架构保障低延迟与高并发下的压缩可控性

适合 CDN 架构师、边缘计算平台工程师、高性能代理系统开发者阅读

Cloudflare 最近介绍了一个名为“缓存转码”(Cache Transcoding)的原型。该技术会在将符合条件的缓存内容(主要是未压缩的文本,如 HTML、JSON、CSS 和 JavaScript)存储到磁盘之前使用 Zstandard 对其进行压缩。据这家超大规模云服务提供商估计,该方法可以额外提供 PB 级的有效缓存容量,不过还需要进行更广泛的测试。

按照这篇文章的说法,所需进行的额外处理工作量相对比较小,因为内容只需在进入缓存时压缩一次,并在提供服务时进行解压。压缩使符合条件的内容减少了约 64%,从而使现有的服务器能够存储更多的数据,并减少了在数据中心之间传输的数据量。

为了实现这一目标,Cloudflare 采用了 Zstandard——这是 Facebook 为实时应用开发的无损压缩算法——并结合了其基于 Rust 的代理框架 PingoraAashi Patel 写道:

CPU 性能的微小提升,就能为 Cloudflare 带来 PB 级的有效缓存容量,并减少数据中心之间的数据传输量。编码开销仅在资源首次进入缓存时产生一次,而后续每次复用该资源时,都能持续带来存储与带宽成本的节省。

Cloudflare 的缓存转码功能仅对满足以下条件的未压缩响应进行压缩:包含可压缩文本、请求成功返回且大小不低于 4 KiB。该功能会排除范围请求、预压缩内容、二进制内容,以及大小未知的响应。该阈值既可以避免对大量的小对象进行处理,又仅牺牲了约 1% 的符合条件的数据。此外,该阈值和 Zstandard 的压缩级别均可以根据 CPU 与存储空间的权衡进行调整。Patel 补充道:

转码并不意味着对所有内容进行压缩。图像、视频和字体通常已经压缩过。在我们的流量样本中,这类媒体内容占请求总数的 21.4%,却占总字节数的 63.3%。对其再次压缩只会白白消耗 CPU 资源。

据 Cloudflare 称,HTML、JSON、CSS 和 JavaScript 等可压缩文本占请求总数的 67.3%,占总字节数的 22.3%。其中,约 71% 的内容到达时并未压缩,而且可以有效压缩。

图片来源:Cloudflare 博客

虽然一些从业者对将“转码”一词用于编码/解码方法提出质疑,但 Hacker News 上的其他用户则在讨论压缩选项。鉴于 Cloudflare 最初考虑将转码限制在热门内容上,用户 MayeulC 写道:

真奇怪,如果目的是在解码过程中节省 CPU 时间,我会选择压缩冷内容。

用户 CodesInChaos 则问道:

我不明白这会对范围请求产生什么影响。如果不进行压缩,这些请求可以通过从缓存中读取完整文件的相关部分轻松满足。但它们现在是如何处理的呢?

他们分别在启用和禁用分层缓存的情况下进行了测试,为的是度量压缩对本地缓存以及缓存层之间数据传输的影响。该原型仍然在开发当中,他们计划针对不同的压缩级别、内容类型、对象大小和缓存场景做进一步测试。

原文链接:https://www.infoq.com/news/2026/09/cloudflare-cache-transcoding/