我们为什么选择在 Cloudflare 上构建
nextpdf/cloudflare 这个包让 NextPDF 能在边缘渲染 PDF、把生成的文件归档到 R2,并在 API 请求到达 worker 之前就把它们拦下来把关。
本节的其他页面会讲清楚这些具体是怎么做到的。这一页不太一样:它写的是我们当初为什么会这么兴奋地想做这件事——那个简短又坦诚的理由,以及一句谢谢。
为什么是 Cloudflare
标题为“为什么是 Cloudflare”的章节我们就直说吧:NextPDF 团队真心喜欢在 Cloudflare 上构建。这是一个我们乐于随手就用的平台,而它那份真正慷慨的免费额度,正是原因中很重要的一部分。这份慷慨对我们来说绝不是可有可无的——正是它,让一个小团队能把比原本更多的东西回馈给开源社区:让引擎更多地保持开放,把更多时间花在人人都能受益的部分上,也让更少的取舍是由基础设施的成本、而不是由项目本身的利益来决定的。当一个平台把门槛降到这么低,在它之上展开的工作,也就能更有野心。
由此开启的可能
标题为“由此开启的可能”的章节这部分我们是真的很想分享,因为我们觉得它打开了一扇扇门。有了跑在 Cloudflare 上的 NextPDF,你的 PHP 应用负责持有 HTML,而一个 Cloudflare Worker 负责持有无头浏览器: 桥接把标记发出去,再把渲染好的 PDF 字节拿回来,这样你的 PHP 进程里就完全不必再运行任何无头 Chromium 了。在此之上,你可以把生成的文件归档到 R2 并交回签名 URL,还能在包这一层就把进入的 API 请求拦下来把关,让它们根本到不了你的 worker。
这是一个专注的小包,把一件事做好,我们也用心把它打磨了出来。但真正让我们迫不及待想把它交到你手上的,并不是代码本身——而是它背后的那个问题:当一个如此能干的 PDF 引擎,遇上一个同样能干的平台,人们会构建出哪些更深、更广、更有意思的东西?我们并不觉得自己已经把它们全都想到了。而这,恰恰正是重点所在。不妨从 概述或 快速上手开始,看看它会把你带到哪里。
用心打磨
标题为“用心打磨”的章节把 HTML 从你的进程里发出去、交由别处渲染,这是一条信任边界,我们也确实把它当成了一条信任边界来对待。桥接在发出任何东西之前,会先校验请求被允许去往何处,其精神与 OWASP 关于服务端请求伪造的指引一脉相承;而它的传输层,可以固定住自己预期看到的那把确切公钥 (RFC 7469)。这些细节——URL 校验、大小限制、公钥固定,以及 R2 相关的各项控制——都写在 Cloudflare 安全与运维里。
谢谢你,Cloudflare
标题为“谢谢你,Cloudflare”的章节那就直说吧:谢谢你。一份慷慨的免费额度和一个可靠的平台,让我们能更轻松地把 NextPDF 保持开放,也让读到这里的开发者们能更轻松地去尝试一些有野心的东西,而不必先由一张账单来替他们做决定。
这个文档站点本身就是通过 Cloudflare 提供服务的——所以如果你此刻正在读它,那你看到的就是它在实践中的样子。
另请参阅
标题为“另请参阅”的章节- NextPDF Cloudflare — 完整的一节内容。
- 概述 — 桥接做什么,以及它的边界在哪里。
- 快速上手 — 你的第一份边缘渲染 PDF。
- Cloudflare 安全与运维 — 详解这条信任边界。
Cloudflare,以及 Cloudflare Workers、R2 等相关产品名称,均为 Cloudflare, Inc. 的商标, 此处引用仅为说明 NextPDF 如何与该平台协同工作。NextPDF 是一个独立项目,与 Cloudflare, Inc. 不存在任何公司层面的关联,也未获得 Cloudflare 的背书或赞助。