Cloudflare 重构 Pingora 缓存架构,优化大文件传输
通过自动化协调部分获取,Cloudflare 解决了原生范围请求导致的带宽浪费问题,将 R2 p99 延迟降低一半。
Cloudflare 在官方工程博客中说明:传统「朴素」的字节范围(byte-range)缓存,在处理大量小范围请求时,容易造成源站带宽浪费。团队因此在 Pingora 中重建了缓存架构,用自动协调的部分获取(partial fetches)来服务大文件,并报告 R2 的 p99 延迟约降低一半。
问题:范围请求与带宽浪费
HTTP Range 请求是大文件下载、断点续传和流媒体的基础能力。但若缓存层对每个小范围请求都独立回源,或拉取了远超实际需要的数据块,就会在边缘与源站之间产生冗余传输。Cloudflare 指出,这种模式可能在小请求场景下浪费大量源站带宽。
做法:在 Pingora 中协调部分获取
新架构的重点不是简单调参,而是在 Pingora 缓存路径上引入对部分获取的自动协调:识别可合并的范围请求,按需拉取字节块,再向客户端返回对应片段。目标是减少重复回源,并让大文件在边缘侧的交付更平滑。
影响面
- R2 与对象存储用户:官方披露 p99 延迟约减半,对尾延迟敏感的下载与媒体场景更有意义。
- 大文件分发方:视频、安装包、数据集等依赖 Range 的业务,有望降低无效回源。
- 边缘与代理开发者:说明基础设施竞争正从「堆带宽」转向更细粒度的传输效率。
仍不确定的部分
博客给出了延迟方向性结果,但未在同一文中给出全局带宽节省比例、全边缘节点长期稳定性,以及非 R2 外部源站的完整对比数据。具体成本与跨厂商可比数字,仍需以后续官方材料或自有观测为准。