背景与动机
近期内存与硬盘成本大幅上升,Cloudflare 作为大规模分布式缓存(CDN)服务商,需提升已有硬件的有效缓存容量。其在实习项目中原型了 Cache Transcoding:在 Pingora 代理中将符合条件的响应用 Zstandard(zstd)编码后再落盘,并在跨数据中心通过 Tiered Cache 传输时保持压缩态,仅在与客户端交互前解码。
压缩算法与参数选择
Zstandard 为 Facebook 开源的无损压缩算法,兼顾压缩比与速度。测试显示其比 Brotli 快 42% 且体积相近,比 gzip 小 11.3%。原型采用 zstd level 3,在缓存填充时一次性编码,后续复用时持续节省存储与带宽。
哪些内容值得转码
- 图片、视频、字体已压缩,占流量字节 63.3%,再压无意义;
- HTML/JSON/CSS/JS 等文本占请求 67.3%、字节 22.3%,其中约 71% 未带 Content-Encoding;
- 仅对 200 OK、无 Content-Encoding、可压缩文本、已知长度 ≥4 KiB 的响应转码;
- 分片、范围请求、已压缩、未知长度及二进制不变。
实测收益
受控语料中合格资源平均压缩约 2.8 倍(磁盘占原 1/3)。百万级请求压测(10 台缓存服务器,半开/半关 Tiered Cache)表明:额外 CPU 仅数个百分点,却可换得 PB 级有效容量与骨干网传输降低。4 KiB 阈值剔除了大量小请求而仅漏掉约 1% 可压字节。
流转过程
缓存未命中时,Pingora 编码后写盘并记录原长度;命中时读 zstd 解码。Tiered Cache 中压缩态直接在上/下层级间传输,仅客户端侧 hop 解码。存储标记防止重复编码。
编码成本仅付一次,存储与带宽节省在每次复用时持续发生。
对读者的意义与技术解读
对运维与 SRE 而言,该思路可直接借鉴:在反向代理或 CDN 边缘层引入透明缓存内压缩,能以极小 CPU 开销显著延缓存储扩容、压降跨机房同步流量。实际落地时应注意按内容类型与大小做 eligibility 过滤,避免对媒体重复压缩;并将压缩级别、阈值作为可调参数,结合本地 hit ratio 与跨 DC 带宽成本权衡。对于自建 Pingora 或类似代理的团队,此方案也展示了如何在不改源站的前提下提升缓存密度与可用性。