我們為什麼在 Cloudflare 上打造 NextPDF
一眼看懂
標題為「一眼看懂」的區段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 的背書或贊助。