Cloudflare
不只是 CDN
很多人認識 Cloudflare,是因為它幫網站擋攻擊、加速。現在它已經是一整套「邊緣應用平台」:前面管網路入口與安全,中間跑程式與排程,後面放檔案、資料庫、佇列與 AI。這份導覽用一張地圖與二十多個互動示範,帶你看懂每個零件在做什麼、什麼時候該用、什麼時候不該硬塞。
這張圖怎麼看
由上往下,是一個請求從外面進來、一路往裡走的順序。最重要的不是每個產品都學,而是先搞清楚四件事:資料放哪裡、程式在哪裡跑、耗時的工作怎麼排隊、哪些東西不該硬塞進 Cloudflare。
先建立三個基本觀念
名詞很多,但每個零件都在解不同的問題。先用生活比喻記住它們,再看兩個最常被問的概念:serverless 與 Edge。
Serverless 是什麼
不是沒有伺服器Serverless 不是沒有伺服器,而是你不用自己管伺服器;有請求才執行,按用量付費。
傳統做法:租一台 VPS
- 1租主機、裝作業系統、Docker、Node.js
- 2自己設防火牆、憑證、程序管理
- 3主機 24 小時開著,半夜沒人用也照付月費
Serverless:Cloudflare Workers
- 1寫一段程式,部署到 Cloudflare
- 2有請求或事件才執行,執行完就結束
- 3擴充、底層機器都由 Cloudflare 管,按請求數與 CPU 時間計費
同樣一天,誰在燒錢?
模擬一個客服 API 的一天:白天忙、半夜幾乎沒人。上排紅色是 VPS 開機計費的時間,下排綠色刻度是 Worker 真的被叫起來工作的時刻。
VPS
Workers
按下播放開始模擬。請求數量為隨機示意。
✓Serverless 的好處
- 幾乎不用管主機、作業系統與擴充
- 流量突然變大,會自動撐住
- 沒流量時,不必養一台閒置主機
- 直接接上 Cloudflare 的 DNS、WAF、R2、D1、KV、Queues
✕Serverless 的限制
- 不是完整的 Linux 或 Docker 環境
- 不適合 24 小時常駐的服務,例如 n8n 主機
- 不適合重型 Python、長時間吃 CPU 的工作
- 長工作要拆給 Queue、Workflow 或外部容器
Edge 網路是什麼
離使用者最近的機房Edge(邊緣)是離使用者最近的 Cloudflare 機房。能在附近做完的事,就不必跑到遠方的主機。
Cloudflare 官方網路頁面顯示它的機房分布在 348 個城市(2026-09-22 查看,數字會持續變動)。使用者連線時,會先連到附近的機房。快取、驗證、轉址、輕量的 API 邏輯,可以在那裡先處理掉。
主機放東京,各地使用者要等多久?
切換兩種模式,看每個城市的一趟來回時間。數字是方便理解的示意值,不是實測。
Edge 快,不代表「你的資料永遠在離每個人最近的地方」。D1、Durable Objects、外部 PostgreSQL 的資料有自己的所在位置;Worker 每次去查資料,仍要付出那段網路距離。Edge 最大的價值通常在:靜態內容快取、在前面擋攻擊與機器人、驗證 token、快速接住 Webhook。
入口層:網路的大門與保全
這是 Cloudflare 最早、也最核心的一層。就算你的後端跑在 GCP、Zeabur、VPS 或 Supabase,也很常把 Cloudflare 放在最前面。
DNS 與 Proxy:橘色雲朵的祕密
網路電話簿+接待櫃台DNS 是網域的電話簿,決定 api.example.com 要連到哪裡。Reverse Proxy(反向代理) 則是讓使用者先連到 Cloudflare,再由 Cloudflare 轉送到你的主機。在 Cloudflare 後台,這個開關就是每筆 DNS 紀錄旁的橘色雲朵。
點雲朵,切換「只當電話簿」或「經過 Cloudflare」
| Type | Name | Content | Proxy status |
|---|---|---|---|
| A | client.com | 203.0.113.10 | |
| CNAME | www | client.com | Proxied |
| MX | client.com | route1.mx.cloudflare.net | DNS only |
IP 位址為文件保留的示範位址。收信用的 MX 紀錄本來就不能經過 Proxy,所以固定是 DNS only。
快取、憑證與規則
低程式碼就能設定| 功能 | 白話說明 | 常見用法 |
|---|---|---|
| CDN/Cache | 把 HTML、圖片、JS、CSS 甚至 API 回應,先複製到離使用者近的機房 | 官網、圖片、文件站加速;減輕主機負擔 |
| SSL/TLS | 自動管理 HTTPS 憑證 | 不用再手動續約憑證 |
| WAF | 網站防火牆,攻擊還沒碰到你的主機就先擋掉 | 擋常見網頁攻擊與惡意請求 |
| Rate Limiting | 限制同一來源的請求頻率 | 登入頁、API、Webhook 防濫用 |
| Bot 管理 | 分辨真人和機器人流量 | 防爬蟲、防暴力嘗試密碼 |
| Rules | Cache、Redirect、Transform、Origin 等規則,用設定代替寫程式 | 網址轉址、改標頭、指定快取時間、依路徑換來源 |
客戶的服務不管放在哪裡,都可以把 Cloudflare 當成「網路入口與保全」。原始主機的 IP 藏在後面,攻擊流量先被擋在外面。
運算層:程式在哪裡跑
Workers 是 Cloudflare 現在建置應用程式的主平台。Pages 負責前端,Routes 負責接線,Containers 補上需要完整 Linux 環境的工作。
Workers
隨叫隨到的工讀生Workers 是「收到事件就立刻處理、回應或派工」的地方,不是「永遠開著一台機器等著跑所有事」的地方。
Workers 是跑在 Cloudflare Edge 上的 serverless function,通常用 JavaScript 或 TypeScript 寫。它可以直接取用 R2、D1、KV、Queues 等服務,組成一個小型後端。
✓適合做
- 接收並驗證 Webhook:LINE、Stripe、GitHub、Slack
- API 前門:統一驗證 API Key、判斷客戶、限流,再轉給內部 API
- OAuth 回呼:例如 Google 登入後交換 token
- 替前端做資料整理的輕量後端(BFF)
- 產生上傳用的簽名網址
- LLM API 代理:統一管金鑰、用量、模型路由、稽核紀錄
✕不適合直接承擔
- 24 小時常駐的 n8n 主服務
- 自己維護的 Redis、PostgreSQL、Qdrant、Docker daemon
- 長時間、吃重 CPU 或記憶體的影音轉檔、大型 Python AI 流程
- 需要完整作業系統、任意系統套件、背景常駐程式的服務
免費方案:每天 100,000 次請求,每次請求最多 10 毫秒 CPU 時間。等待網路回應(fetch、查資料庫)不算 CPU 時間。
付費方案(Workers Paid):每帳號每月最低 5 美元,含每月 1,000 萬次請求與 3,000 萬 CPU 毫秒。單次請求 CPU 預設上限 30 秒,最多可調到 5 分鐘。
Pages
放網站前端的地方「Pages 就是前端」這樣理解八成正確。連上 GitHub 後,每次 push 就自動 build、部署,每個 Pull Request 還會有自己的預覽網址。你現在看的這份導覽,就是部署在 Pages 上的靜態網站。
✓典型用途
- 公司形象網站、Landing Page、文件站
- React、Vue、Astro、Vite 的靜態輸出
- 前端 Dashboard
- 每個 Pull Request 的預覽站
i要知道的事
- Pages 也能加 Pages Functions 做小型 API,請求數和 Workers 共用同一份額度
- 官方建議新專案直接從 Workers 開始,Workers 已涵蓋 Pages 大部分用途,功能也更完整
- Pages 沒有宣布停止服務,既有專案照常運作
每月 500 次 build、同時 1 個 build;單一站台最多 20,000 個檔案;單檔上限 25 MiB。純靜態資源的請求免費且不限次數。
Routes 與自訂網域
把網址接到 Worker 的接線規則Worker 部署後會拿到一個 *.workers.dev 網址。正式服務通常會綁上 api.client.com、webhook.client.com 這類自己的網域,再用 Route 決定哪些網址交給哪一支 Worker。這樣就不用把 Zeabur、Cloud Run 或 VPS 的原始網址直接公開。
輸入一個網址,看它會被交給誰
| Route 規則 | 交給 |
|---|---|
| api.client.com/* | api-worker |
| client.com/webhook/* | line-webhook-worker |
| client.com/api/* | api-worker |
這個示範用「最長的規則優先」近似 Cloudflare「越具體越優先」的比對方式。
Wrangler 與 binding
工程師的遙控器Wrangler 是 Cloudflare 的命令列工具,用來建立專案、在本機測試、部署。binding(綁定) 是把 R2、D1、KV、Queue 等服務「插」進 Worker 的方式:設定檔寫一行,程式裡就能用 env.DB、env.FILES 直接操作,不必自己管連線字串與金鑰。
設定檔 wrangler.jsonc(官方建議格式)
// 一個接 LINE Webhook 的 Worker { "name": "line-webhook", "main": "src/index.ts", "compatibility_date": "2026-09-01", "kv_namespaces": [{ "binding": "CONFIG", "id": "…" }], "d1_databases": [{ "binding": "DB", "database_name": "client-db", "database_id": "…" }], "r2_buckets": [{ "binding": "FILES", "bucket_name": "client-files" }], "queues": { "producers": [{ "binding": "JOBS", "queue": "media-jobs" }] }, "routes": [{ "pattern": "webhook.client.com", "custom_domain": true }] }
部署一次看看
# 按下方按鈕執行部署(模擬輸出)
wrangler dev 會用 Cloudflare 開源的執行環境(workerd,透過 Miniflare)在你電腦上模擬 Worker 與 KV、D1、R2 等服務。本機資料預設存在專案的 .wrangler/state 資料夾,不會碰到正式資料。
Containers 與 Sandbox
延伸:完整的 Linux 工作室Containers 讓你在 Cloudflare 上跑任何語言寫成的 Docker 映像檔,由 Worker 程式控制容器的啟動與執行指令。它在 2026-04-13 正式推出(GA),只有 Workers Paid 方案能用,依記憶體、CPU、磁碟與下載流量(egress)的實際用量計費;和 R2 不同,Containers 的下載流量要收費。建在它上面的 Sandbox SDK,專門用來在隔離環境執行不受信任的程式碼,例如讓 AI 寫的程式安全地跑起來。
需要 Python 套件、影音轉檔、長時間運算,又希望由 Worker 統一調度,可以評估 Containers。24 小時常駐、要穩定維運的服務(例如 n8n 主機與它的 PostgreSQL),目前仍建議放在 Zeabur、Cloud Run 或 VPS 這類傳統主機。這是本導覽的建議,不是官方規定。
資料層:東西要放哪裡
選錯儲存是最常見、也最難回頭的錯誤。先用選型小幫手找到方向,再逐站看每種儲存的個性。
選型小幫手
你要存的是什麼你手上的東西是……
點上面任一個需求,這裡會告訴你該用什麼、不要誤用成什麼。
R2 物件儲存
倉庫R2 放檔案本體;D1 或 PostgreSQL 放「檔案的索引、權限、描述與處理結果」。
R2 和 Amazon S3 的 API 相容,所以 n8n、AWS SDK、rclone 等工具幾乎都能直接接。它最大的賣點是不收 egress 費。egress 是資料從雲端「傳出去」的流量:一支 500 MB 的影片被下載一次,就是 500 MB 的 egress。很多雲端服務會按這個收錢,檔案越熱門帳單越高;從 R2 直接傳出則不收。
| Object key | Size | Type |
|---|---|---|
| client-a/training/2026-09/video-001.mp4 | 100 MB | video/mp4 |
| client-a/handbook.pdf | 4.2 MB | application/pdf |
| client-a/line/U12345/img-0921.jpg | 860 KB | image/jpeg |
✓適合放
- LINE、表單上傳的圖片、影片、語音
- PDF、Word、Excel、掃描檔、知識庫原始文件
- AI Agent 的附件與輸出檔
- 備份、log 封存、靜態素材
- n8n 處理中不想塞進記憶體的二進位資料
✕不適合放
- 使用者資料表、訂單資料表
- 權限關係、需要條件查詢的資料
- 需要用 SQL 查的對話紀錄
- 多人即時協作的共享狀態
每月免費 10 GB-月儲存、100 萬次 Class A 操作(寫入、列出這類)、1,000 萬次 Class B 操作(讀取這類)。超過後每 GB-月 0.015 美元,Class A 每百萬次 4.50 美元,Class B 每百萬次 0.36 美元。GB-月是「整個月的平均儲存量」,不是月底瞬間的量。想試算,請到 R2 試算器。
D1 serverless SQL 資料庫
小型表格系統D1 說的是 SQLite 的 SQL,不是 PostgreSQL。它適合輕量、有欄位、要用條件查的資料。
Serverless SQL 資料庫的意思是:不用租一台 24 小時開著的資料庫主機,而是按「讀了幾列、寫了幾列、存了多少」付費。資料一樣會永久保存,你刪掉才會消失。Worker 透過 binding 直接下 SQL,不必管連線池。
一張 documents 資料表,三種常見查詢
✓適合
- 小型 SaaS 的帳號、角色、訂閱狀態
- 表單、預約、客戶設定
- Agent 任務的狀態與操作紀錄
- R2 檔案索引:檔名、路徑、上傳者、分類
- 輕量 CRM、產品目錄
✕要先評估或改用 PostgreSQL
- n8n 的正式資料庫
- 需要 pgvector、PostGIS 等 PostgreSQL 擴充
- 高並發、大量寫入的交易系統
- 複雜報表、跨很多表的大型系統
- 既有 Prisma、Supabase、Postgres migration 流程
免費方案:每天讀 500 萬列、寫 10 萬列,總儲存 5 GB,單一資料庫上限 500 MB。自 2026-09-01 起,免費帳號超過每日額度會直接失敗,等 UTC 午夜重置。
付費方案:每月含讀 250 億列、寫 5,000 萬列、5 GB 儲存;單一資料庫上限 10 GB,官方說明無法再調高。讀取副本(read replication)目前仍是 Beta。
Workers KV
全球便利貼KV 就是用一把鑰匙(key),快速拿到對應的值(value)。適合讀很多、寫很少、晚幾秒同步也沒關係的資料。
例一:客戶設定
// key "tenant:client-a:settings" // value { "model": "claude-sonnet", "monthlyTokenLimit": 5000000, "enabled": true }
Worker 每次收到客戶 A 的請求,先讀這張便利貼,就知道能用哪個模型、每月上限多少。
例二:短網址
// key "shorturl:abc123" // value "https://example.com/very/long/url?campaign=…"
有人打開 go.example.com/abc123,Worker 讀 KV 查到原網址,回一個 302 轉址。
在台北改設定,其他城市什麼時候讀得到?
KV 是「最終一致(eventual consistency)」:寫入的地方通常馬上看得到,其他地方要等一會兒才同步,官方不保證時間。這段空窗期裡,有些人會讀到舊值。
✓適合放
- 功能開關(feature flag)
- 客戶設定、租戶路由表
- 快取後的 API 回應(設 60 秒或 5 分鐘到期)
- 短網址對應、語言對照表
- 短期的一次性狀態
✕不要放
- 扣庫存、最後一個名額
- 付款後必須立刻更新的訂單狀態
- 帳務餘額、對帳紀錄
- 多人同時寫入、必須精確計數的資料
- 需要 SQL 查詢、排序、報表的資料
全球同步通常在 60 秒內完成,但官方不保證,可能更久。同一個 key 每秒最多寫入 1 次,太頻繁的寫入官方建議改用 Durable Objects。免費方案每天 10 萬次讀取、1,000 次寫入、1 GB 儲存;單一 value 上限 25 MiB。
Durable Objects
每件事一位專責櫃台每個 Durable Object 有一個全球唯一的 ID。同一個 ID 的所有請求,都交給同一位櫃台依序處理,不會兩個人同時亂改。
它不是一般資料庫,也不是快取,而是「帶著私人儲存空間的 Worker」。每個 DO 有自己的 SQLite 儲存,讀寫是強一致、有交易保護的。最適合的情境是:資料可以依某個 ID 切開,而每一份都必須保持一致。
A 和 B 在同一毫秒按下「預約」
| 比較 | KV | Durable Objects |
|---|---|---|
| 像什麼 | 全球便利貼 | 一個 ID 一位專責櫃台 |
| 一致性 | 最終一致,可能短暫讀到舊值 | 強一致,讀寫順序可控 |
| 能跑程式邏輯嗎 | 不能,只存取資料 | 可以,它本身就是帶儲存的 Worker |
| 大量讀取 | 非常適合 | 不一定需要用它 |
| 多人同時改同一份狀態 | 不適合 | 很適合 |
| WebSocket/即時房間 | 不適合 | 很適合 |
| 複雜度 | 低,簡單 | 較高,要先設計好 ID 怎麼切 |
✓適合
- 一個聊天室、一場會議、一個遊戲房間一個 DO
- 一段 LINE 對話、一個 AI Agent session 一個 DO
- 秒殺活動的名額、單一資源鎖定
- 全域限流計數、WebSocket 連線管理
✕不適合
- 當成全公司的 CRM、ERP 或 n8n 資料庫
- 跨很多 DO 的全域報表與查詢
- 每個 DO 的資料是私有的,別的 DO 不能直接讀
免費方案也能用,但只能用 SQLite 儲存版本:每天 10 萬次請求、13,000 GB-秒執行時間。付費方案每月含 100 萬次請求與 40 萬 GB-秒。單一物件儲存上限:付費 10 GB;免費方案依官方 FAQ 為 1 GB,帳號總量 5 GB(官方限制頁的表格沒有依方案分列)。
外部 PostgreSQL
大象要自己找家Cloudflare 自己不營運 PostgreSQL。要用「大象」,就外接一家 PostgreSQL 服務,再讓 Worker 透過 Hyperdrive 連過去。
自 2026-06-18 起,也可以直接在 Cloudflare 後台建立 PlanetScale 的 Postgres 或 MySQL 資料庫。資料庫由 PlanetScale 營運,費用照 PlanetScale 原價併入 Cloudflare 帳單。
| 需求 | 建議 |
|---|---|
| 小型 Web App、表單、簡易帳號、任務狀態、R2 檔案索引 | D1 |
| n8n 的正式資料庫 | PostgreSQL |
| 多租戶 SaaS、CRM、複雜權限、交易資料、分析報表 | PostgreSQL |
| RAG 想用 pgvector、在 SQL 裡查向量 | PostgreSQL |
| API 在 Worker,資料庫要用 PostgreSQL | PostgreSQL+Hyperdrive |
| 即時聊天室、單一對話 session、多人同時改同一份狀態 | Durable Objects |
PostgreSQL 可以放哪裡
| 選項 | 特色 | 適合 |
|---|---|---|
| Neon | serverless PostgreSQL,可分支(branching)、沒用時可縮到零 | 現代 Web App |
| Supabase | PostgreSQL+登入+檔案+即時功能一次包好 | 要快速做出產品 |
| GCP Cloud SQL | 私有網路、權限控管、稽核與 GCP 整合 | 企業客戶 |
| AWS RDS/Aurora | 接得上客戶既有的 AWS 架構 | AWS 客戶 |
| VPS+Docker | 固定成本最低、完全自己控制;備份、升級、高可用、資安全部自己扛 | 有維運能力的團隊 |
| Zeabur PostgreSQL | 原型與中小型專案很方便;正式案要確認備份、網路隔離與服務等級 | 原型、中小型專案 |
Hyperdrive
高速接線員Hyperdrive 不是資料庫。它是 Worker 連外部 PostgreSQL 或 MySQL 時的加速器與連線池。
Serverless 的特性是「請求來了才起來、做完就結束」。如果每個請求都重新跟資料庫握手建立連線,資料庫很快就被塞爆。Hyperdrive 在中間幫你維持一池已經建好的連線(connection pooling),並快取常見的查詢結果。你可以繼續用原本的 PostgreSQL 驅動程式與 ORM。
- 1Cloudflare Worker
- 2Hyperdrive:連線池+查詢快取
- 3Neon、Supabase、PlanetScale、Cloud SQL、AWS RDS 或自架 PostgreSQL/MySQL
支援 PostgreSQL 與 MySQL(MySQL 在 2026-08-07 轉為正式版);不支援 SQL Server、MongoDB,也不需要拿來接 D1。免費方案每天 10 萬次查詢,付費方案不限次數。Hyperdrive 本身不另收費,資料庫主機費用由資料庫供應商另計。
Vectorize 向量資料庫
語意索引卡Vectorize 只負責「存向量、找最像的向量」。它是 RAG 的核心零件,但不是完整的知識庫系統。
向量(embedding)是把一段文字交給 embedding 模型後換回的一串數字。意思相近的文字,數字也相近。Vectorize 可以存 OpenAI、Gemini、Voyage、Cohere、Workers AI 等任何模型產生的向量,每筆連同 ID 與 metadata 一起寫入:
{
"id": "customer-a-handbook-p12-chunk-03",
"values": [0.012, -0.087, 0.441, …共 1,536 個數字],
"metadata": {
"tenantId": "customer-a",
"documentId": "handbook-2026",
"page": 12,
"r2Key": "customer-a/handbook.pdf"
}
}
建索引與使用者提問,必須用同一個 embedding 模型、同樣的維度、同樣的前處理。換了模型,數字就不在同一張地圖上,搜尋結果會很差。
✓Vectorize 會做
- 儲存向量,找出最相似的前幾筆
- 用 metadata 篩選,例如只搜某個客戶的文件(每個 index 最多 10 個可篩選欄位)
- 單一 index 最多 2,000 萬筆向量,每筆最多 1,536 維
✕Vectorize 不會做
- 不會幫你把文字轉成向量
- 不會切段、不會自動同步文件
- 沒有關鍵字搜尋與內建重排(rerank)
- 不會生成回答,這些要自己組或改用 AI Search
費用算法和 R2 不同,不是按 GB,而是按「向量筆數 × 維度」。細節請看 Vectorize 試算器。
非同步層:把「收到」和「做完」拆開
使用者和 Webhook 不該等重活做完。先回一句「收到了」,工作排隊慢慢做,失敗了自動重試。
Queues 訊息佇列
工作排隊區Queues 把「收到事件」和「實際耗時處理」拆開:削峰、重試、解耦。
收到 LINE Webhook 時,不該在幾秒內同時做完下載影片、OCR、轉檔、叫 AI、寫資料庫。比較好的做法是:Worker 驗證簽章後,把一張工作單丟進 Queue,立刻回 200 OK;後面的消費者(consumer)再慢慢領工作單來做。
直接處理 vs 先排隊
① Webhook 回應
② Queue 排隊中
③ 資料庫裡的結果
綠色=成功;紅色=逾時或重複;黃色=處理中;紫色=排隊中。
Queues 保證每則訊息至少送達一次,但在少數失敗與重試情況下,同一則訊息可能被處理兩次。訊息也不是永遠留著:重試達上限又沒設死信佇列(DLQ)、或超過保留期限的訊息,會被刪除。所以 consumer 要做冪等(idempotency):用 messageId 這類唯一鍵,先查「處理過沒」,處理過就跳過。
Queues 是 Redis 嗎?不是。
| 項目 | Cloudflare Queues | Redis |
|---|---|---|
| 本質 | 受管的訊息佇列 | 放在記憶體裡的資料庫 |
| 主要用途 | 非同步派工、緩衝、保證送達 | 快取、session、限流、pub/sub、也能當佇列 |
| 要不要自己維護主機 | 不用 | 要自架,或用 Upstash、Redis Cloud 等代管服務 |
| 能取代 n8n Queue Mode 的 Redis 嗎 | 不能直接取代 | n8n Queue Mode 就是設計搭配 Redis |
看一段程式:Webhook 只派工,consumer 做冪等檢查
export default { // 1. 收 Webhook:只派工,不做重活 async fetch(request, env) { // (驗證 LINE 簽章的步驟省略) const body = await request.json(); for (const ev of body.events) { await env.JOBS.send({ messageId: ev.message.id, userId: ev.source.userId }); } return new Response("OK"); // 2. 立刻回 200 }, // 3. Consumer:慢慢領工作單 async queue(batch, env) { for (const msg of batch.messages) { const done = await env.DB .prepare("SELECT 1 FROM jobs WHERE message_id = ?") .bind(msg.body.messageId).first(); if (done) { msg.ack(); continue; } // 4. 冪等:處理過就跳過 // 下載圖片存 R2、叫 AI、把結果寫回資料庫…… msg.ack(); } }, };
自 2026-02-04 起免費方案也能用:每天 10,000 次操作,訊息最多保留 24 小時。付費方案每月含 100 萬次操作,訊息保留預設 4 天、最長 14 天。一則訊息送達大約用掉 3 次操作(寫、讀、刪各一),單則上限 128 KB。重試達上限(預設 3 次)的訊息可以送進死信佇列(DLQ)另外處理;沒設 DLQ 的話,這些訊息會被永久刪除。
Workflows
會記進度的 SOP如果 Queue 是「丟一張工作單給工人」,Workflow 就是「一份會記錄進度、可以等待、失敗會重試的 SOP」。
Workflows 不是把好幾個 Python 服務串起來的工具,而是在 Worker 裡用 TypeScript 寫一份多步驟流程。Cloudflare 幫你記住每一步有沒有完成;中途失敗時,已經成功的步驟不會重跑,只從失敗那一步接著做。
客戶上傳一份 PDF,跑完 8 個步驟
- 1確認檔案格式與客戶權限等待
- 2PDF 原檔存進 R2等待
- 3呼叫 OCR 取出文字等待
- 4切成段落(chunk)等待
- 5呼叫 embedding 模型轉向量等待
- 6向量寫入 Vectorize等待
- 7文件狀態寫回資料庫等待
- 8上架到客服知識庫並通知客戶等待
✓適合
- 註冊後:建帳號 → 寄信 → 等 3 天 → 沒啟用就提醒
- 文件上架:掃毒 → OCR → 切段 → 轉向量 → 通知
- Agent 任務:規劃 → 執行工具 → 等人審核 → 繼續
- 訂單:確認付款 → 開通服務 → 寄通知,失敗自動重試
i三個關鍵能力
step.sleep():暫停一段時間,最長 365 天step.sleepUntil():睡到指定時間step.waitForEvent():等外部事件或人工核准,預設 24 小時,可設到 365 天- 等待期間不算 CPU 時間
免費方案可用:每天 3,000 個步驟,單一流程最多 1,024 步。付費方案每月含 50 萬個步驟,單一流程預設最多 10,000 步、可調到 25,000 步。
Cron Triggers
鬧鐘Cron Trigger 就是定時叫醒一支 Worker,概念和 Linux 的 cron 一樣。如果流程只是「定時跑一段短程式」,用 Cron 就夠;如果叫醒後還要經過很多步、要重試、要等待,就讓 Cron 去啟動一個 Workflow。
| Cron 表達式 | 意思(Cloudflare 以 UTC 時間計) | 用途 |
|---|---|---|
| 0 0 * * * | 每天 UTC 00:00=台灣早上 8 點 | 寄每日報表 |
| 0 * * * * | 每小時整點 | 同步 CRM |
| */10 * * * * | 每 10 分鐘 | 檢查任務有沒有逾時 |
| 0 18 * * * | 每天 UTC 18:00=台灣凌晨 2 點 | 清掉 R2 暫存檔 |
| 0 1 1 * * | 每月 1 日 UTC 01:00=台灣早上 9 點 | 整理月度用量與帳務 |
免費方案每帳號 5 個 Cron,付費方案每帳號 250 個。新增或修改排程,最多約 15 分鐘後才會全球生效。
Queues、Workflows、n8n 怎麼分工
不是互斥Workflows 是工程型的「程式內工作流」;n8n 是低程式碼、視覺化、串接各種 SaaS 很強的工作流平台。兩者可以並存。
| 需求 | 最適合 |
|---|---|
| 大量事件先接住、削峰、背景處理 | Queues |
| 多步驟、要等待、要重試、要記住進度的程式流程 | Workflows |
| 串 Google Workspace、LINE、Slack、CRM、Email,讓客戶或非工程人員看得懂、能維護 | n8n |
| 高流量 API 內部流程,要和 Worker 綁很緊,重視成本與程式版控 | Workflows |
| 重型 Python、影音轉檔、長時間瀏覽器自動化 | Cloud Run、Docker 或 VPS,再由 Queue 或 n8n 呼叫 |
AI 層:模型、閘門、檢索與 Agent
Cloudflare 的 AI 產品分工很清楚:Workers AI 提供模型,AI Gateway 管理呼叫,Vectorize 和 AI Search 負責檢索,Agents SDK 讓 Agent 有記憶,Browser Run 讓 Agent 會開網頁。
Workers AI
Cloudflare 機房裡的 GPUWorkers AI 是 serverless 的 AI 推論服務:從 Worker 或 API 直接呼叫 Cloudflare 網路上的開源模型,不必自己管 GPU,也不用為閒置的 GPU 付錢。
| 類別 | 代表模型(節錄官方模型頁) |
|---|---|
| 文字生成 | Llama 3.3 70B、Gemma、Qwen 系列 |
| 文字向量 | BGE(Base、Large、Small) |
| 語音 | Whisper 語音辨識、Aura 與 MeloTTS 文字轉語音 |
| 影像 | FLUX.1 schnell、Stable Diffusion XL 生圖;Llama 3.2 Vision 看圖 |
| 分類與重排 | Llama Guard 安全分類、BGE Reranker |
主力用 Claude、GPT、Gemini 的團隊,不一定要換掉它們。Workers AI 很適合當便宜的 embedding 與分類來源、沒有外部金鑰時的快速原型,或特定開源模型的推論選項。它也提供 OpenAI 相容 API,把 OpenAI SDK 的 baseURL 換掉就能用。
免費與付費方案每天都有 10,000 neurons 免費額度(neurons 是 Workers AI 的計費單位)。付費方案超過後,每 1,000 neurons 0.011 美元。2026-08-07 起,Workers AI 與 AI Gateway 共用同一個 AI binding,呼叫都走同一條路。
AI Gateway
所有 AI 呼叫的總閘門AI Gateway 不提供模型,它管理你對模型的每一次呼叫:看用量、擋暴衝、失敗自動換模型。
把 Anthropic、OpenAI、Google、Azure OpenAI、Amazon Bedrock、Workers AI 等約 24 家供應商的呼叫,都改成經過 AI Gateway。之後要換模型、設預算、替每個客戶限流、找出哪個流程最燒錢,都在同一個地方處理,不必去翻每一個 n8n workflow 裡各自塞的 API Key。
送一批請求,看快取、用量與自動備援
✓它提供
- 可觀測性:模型、延遲、錯誤、token 用量
- 快取:相同請求直接回應,省錢又快
- 限流:避免某個客戶或流程把 API 打爆
- 重試與備援:主模型失敗就切換
- 統一計費(Unified Billing):預付額度跨供應商共用
!它不取代
- 你原本的 API Key 管理
- 角色權限控管(RBAC)
- 資料遮罩與個資政策
核心功能免費:分析、快取、限流、日誌。免費方案日誌每帳號最多存 10 萬筆,付費方案每個 gateway 1,000 萬筆。透過 Unified Billing 購買額度,收 5% 手續費;模型本身的費用照供應商原價。
RAG 怎麼組
讓 AI 根據你的文件回答RAG(檢索增強生成)是先從你的資料裡找出相關段落,再交給大型語言模型,請它根據這些段落回答。它分成兩條流程:事先建索引,和使用者提問。
用純 Vectorize 也能做重排:先找前 20 段,把「問題+20 段」送給 Cohere、Voyage、Jina 等 rerank 模型,取重排後的前 5 段再交給 LLM。
AI Search
包好的 RAG 服務AI Search 原名 AutoRAG,2025-09-25 改名。它建在 R2 與 Vectorize 之上,把「文件同步、切段、轉向量、搜尋、重排、生成回答」包成一個服務。目前仍是 open beta。
| 能力 | Vectorize | AI Search |
|---|---|---|
| 儲存與搜尋向量 | 是 | 是(底層就是 Vectorize) |
| Metadata 篩選 | 是 | 是 |
| 自己挑 embedding 模型 | 是,自己呼叫 | 由 AI Search 管理 |
| 自動索引與持續同步 | 否 | 是 |
| 關鍵字搜尋 | 否 | 是 |
| 混合搜尋(關鍵字+向量) | 否 | 是,向量與 BM25 並行後融合 |
| 內建 rerank | 否 | 是,但預設關閉 |
| 生成回答 | 否 | 可選 |
open beta 期間,AI Search 在限額內免費;Workers AI 與 AI Gateway 的用量另外計費。官方表示正式收費前至少 30 天會公告。
Agents SDK
有記憶、會等人確認的 AgentAgents SDK 用來打造有持久記憶、即時連線與排程能力的 AI Agent。官方文件明講:每個 Agent 就是一個 Durable Object。所以它天生有自己的 SQLite 狀態、可以維持 WebSocket 連線、可以排程叫醒自己。
主要能力
- 狀態:每個 Agent 自帶 SQLite,狀態自動保存
- 即時連線:WebSocket 雙向溝通,前端可同步狀態
- 排程:一次性、延遲、cron 都可以
- MCP:內建 MCP client,可以接外部工具
- 人工確認:動作執行前先讓人核准
- 多渠道:網頁、Slack 等訊息平台可以進同一個 Agent;LINE 要自己接 webhook
它是值得研究的工程型 Agent 執行環境。要做「可產品化、多人使用、有即時 session、要控成本」的 Agent 服務時很有吸引力;不必一開始就拿來取代既有的 n8n 或其他 Agent 框架。
Browser Run
雲端瀏覽器Browser Run 原名 Browser Rendering,2026-04-15 改名。它讓 Worker 或 Agent 在 Cloudflare 上開一個完整的瀏覽器:可以用 Puppeteer、Playwright 操作,也可以用一次 HTTP 請求直接截圖、產 PDF、轉成 Markdown、抓結構化資料。改版後還有即時觀看、人工介入與 session 錄影回放。
| Run | 類型 | 目標 | 時間 | 狀態 |
|---|---|---|---|---|
| run_8f2a | Quick Action · screenshot | example.com/pricing | 2.1 s | 完成 |
| run_8f29 | Quick Action · pdf | example.com/report | 3.4 s | 完成 |
| run_8f27 | Session · Playwright | portal.example.com | 48 s | 需人工介入 |
目標網站的服務條款與 robots 規則;登入帳密、Cookie、session token 的保管;網站改版造成的失敗率。它不是完全穩定的 RPA 替代品。
免費方案每天 10 分鐘瀏覽器時數;付費方案每月 10 小時,超過每小時 0.09 美元。
安全層:誰能進來、從哪裡進來
部署 n8n、內部後台、測試環境時,最有用的組合通常是:Tunnel+Access+公司帳號登入,原始管理連接埠完全不公開。
Access 與 Tunnel
門禁+專線Tunnel:在你的內網主機或 VPS 上跑一個小程式,由它主動往外撥一條專線到 Cloudflare。主機不用開放任何對外連接埠,外面的人也查不到它的真實 IP。
Access:在服務前面加一道登入門禁。只有符合規則的人(例如公司 Google 帳號、指定 Email)才能通過;其他請求停在 Cloudflare,連你的主機都碰不到。
- 1使用者打開 n8n.client.com
- 2Access 要求登入並檢查規則
- 3通過後,流量經 Tunnel 送到內網的 n8n
client.com 內部系統
請用公司帳號登入。允許規則:Email 結尾是 @client.com
Tunnel 本身免費。Zero Trust 有小團隊免費方案,常見說法是 50 位使用者以內免費;確切範圍請以 Cloudflare 官方方案頁為準。
其他安全與周邊工具
常見搭配| 產品 | 做什麼 | 常見用法 |
|---|---|---|
| Access | Zero Trust 存取控制 | 保護 n8n、內部 Dashboard、測試環境 |
| Tunnel | 內網主機往外撥專線到 Cloudflare | 不開公開連接埠,只讓授權的人連進來 |
| Turnstile | 不用點紅綠燈的「我不是機器人」驗證 | 表單、註冊、登入、公開 API 防機器人;免費方案不限驗證次數,最多 20 個 widget |
| WAF | 網站防火牆 | 擋常見網頁攻擊與惡意請求 |
| Rate Limiting | 限制請求頻率 | API、登入、Webhook 防濫用 |
| API Shield | API 安全治理 | mTLS、依 schema 驗證請求、管控 API 端點 |
| Email Routing | 網域信件轉寄 | 小型專案收信轉寄,或當事件入口;免費 |
| Zaraz | 管理網站上的第三方追蹤程式 | 減少網頁直接載入第三方 script 的風險與負擔 |
| Registrar | 網域註冊 | 以成本價買網域與續約,不加價 |
組合藍圖:零件怎麼拼成一套系統
三種常見的專案規模。Cloudflare 的強項不是「一個產品取代所有雲端服務」,而是把入口、安全、API、檔案、輕量資料、非同步工作與 AI 治理整合得很緊。
適合:表單、會員、預約、簡易 CRM、任務管理、小型 SaaS。全部放在 Cloudflare,幾乎沒有要維運的主機。
適合:企業知識庫、RAG 客服、內部 Copilot、文件問答。核心資料用 PostgreSQL,保留熟悉的 SQL、pgvector、備份與 ORM 生態。
適合:已經在用 n8n 的自動化團隊。讓 Cloudflare 做它最擅長的入口、安全、檔案與 AI 治理;常駐服務與重活留在傳統主機。
Cloudflare
- DNS、WAF、Access、Tunnel:公開入口與安全
- Workers:Webhook 驗證、輕量轉發、API 門面
- R2:圖片、影片、PDF、二進位資料、暫存檔
- Queues:高流量或耗時任務削峰
- AI Gateway:集中管理 LLM 呼叫
- D1/KV:輕量設定、快取、任務狀態
Zeabur/Cloud Run/VPS
- n8n:視覺化工作流、跨 SaaS 整合
- PostgreSQL:n8n 正式資料庫與核心業務資料
- Redis:n8n Queue Mode 或快取
- Python/Node 容器:OCR、重型 Agent、影片處理
LINE Webhook → Worker 驗簽並回 200 → 圖片存 R2 → 工作單進 Queue → n8n 或 Cloud Run 做 OCR、叫 AI → 結果寫 PostgreSQL。
費用:免費能做到哪裡
大部分產品都有免費額度。付費通常指 Workers Paid 方案:每帳號每月最低 5 美元,含一大包用量,超過才按量計費。以下數字查證於 2026-09-22,Cloudflare 會調整方案,正式使用前請再看官方價目頁。
免費與付費總表
表格可左右滑動| 產品 | 免費方案 | 付費方案內含 | 超過後 |
|---|---|---|---|
| Workers | 每天 10 萬次請求,每次 10 ms CPU | 每月 1,000 萬次請求、3,000 萬 CPU 毫秒 | 請求每百萬次 0.30 美元;CPU 每百萬毫秒 0.02 美元 |
| Pages | 每月 500 次 build;靜態請求免費不限次數 | Functions 的請求算進 Workers 額度 | |
| KV | 每天讀 10 萬次、寫 1,000 次,1 GB | 每月讀 1,000 萬次、寫 100 萬次,1 GB | 讀每百萬次 0.50 美元;寫每百萬次 5 美元;儲存每 GB-月 0.50 美元 |
| D1 | 每天讀 500 萬列、寫 10 萬列,5 GB | 每月讀 250 億列、寫 5,000 萬列,5 GB | 讀每百萬列 0.001 美元;寫每百萬列 1 美元;儲存每 GB-月 0.75 美元 |
| R2 | 不分方案:每月 10 GB-月、Class A 100 萬次、Class B 1,000 萬次 | 儲存每 GB-月 0.015 美元;A 每百萬次 4.50 美元;B 每百萬次 0.36 美元;egress 免費 | |
| Durable Objects | 每天 10 萬次請求、13,000 GB-秒(僅 SQLite 版) | 每月 100 萬次請求、40 萬 GB-秒 | 請求每百萬次 0.15 美元;執行每百萬 GB-秒 12.50 美元 |
| Queues | 每天 1 萬次操作,保留 24 小時 | 每月 100 萬次操作 | 每百萬次 0.40 美元 |
| Workflows | 每天 3,000 步,1 GB | 每月 50 萬步,1 GB | 每 10 萬步 0.80 美元;儲存每 GB-月 0.20 美元 |
| Vectorize | 查詢每月 3,000 萬維度;儲存 500 萬維度 | 查詢每月 5,000 萬維度;儲存 1,000 萬維度 | 查詢每百萬維度 0.01 美元;儲存每 1 億維度 0.05 美元 |
| Hyperdrive | 每天 10 萬次查詢 | 不限次數 | 不另收費 |
| Cron Triggers | 每帳號 5 個 | 每帳號 250 個 | 不另收費 |
| Workers AI | 每天 10,000 neurons(兩種方案都有) | 每 1,000 neurons 0.011 美元(僅付費方案) | |
| AI Gateway | 核心功能免費;日誌免費方案每帳號 10 萬筆 | Unified Billing 收 5% 手續費 | |
| AI Search | open beta 期間限額內免費 | Workers AI 與 AI Gateway 用量另計 | |
| Browser Run | 每天 10 分鐘 | 每月 10 小時 | 每小時 0.09 美元 |
| Containers | 不提供 | 僅付費方案;依記憶體、CPU、磁碟、下載流量實際用量計費(下載流量要收費,和 R2 不同) | |
| Turnstile | 免費,不限驗證次數,最多 20 個 widget | ||
多數產品在免費方案超量時是「直接失敗、隔天 UTC 00:00 重置」,不會自動扣款。例如 Workers 超過每日請求數會回錯誤;D1 自 2026-09-01 起也會直接擋下。上線給客戶用的服務,建議升級付費方案,避免半夜突然停擺。
R2 費用試算
拖動看看已扣除每月免費額度,並照官方規則把計費單位無條件進位(例如 40.1 GB 算 41 GB)。對照組單價預設 0.09 只是示意,請填入你要比較的服務實際價格。範例:平均存 50 GB=(50-10)× 0.015=0.60 美元/月。
Vectorize 費用試算
按維度計,不按 GB儲存維度=向量筆數 × 每筆維度。
查詢維度=(已存向量筆數+查詢次數)× 每筆維度。
注意:有查詢的月份,查詢維度會把已存的向量筆數一起算進去,不是只算查詢次數。完全沒有查詢的月份,不收查詢維度費。
範例:10,000 段 × 1,536 維=1,536 萬儲存維度,超過付費方案內含的 1,000 萬約 536 萬維度,儲存超額費約 0.0027 美元。真正要注意的通常是 embedding、LLM 與 rerank API 本身的費用。
開始上手
不需要一次全碰。依照做 AI 自動化與系統整合最常遇到的需求,建議照下面的順序學。
八步學習路線
勾選會記在這台瀏覽器進度 0 / 8
常見問題
點開看答案D1 是 PostgreSQL 嗎?
不是。D1 使用 SQLite 的 SQL 語意。PostgreSQL 的擴充(pgvector、PostGIS)、RLS、完整的 JSONB 生態、進階交易行為,都不能假設能直接搬過去。要用 PostgreSQL,就外接一家服務,再用 Hyperdrive 連線。
Durable Objects 能取代 PostgreSQL 嗎?
通常不行。DO 是「每個物件各自有強一致儲存」的協調元件,資料依物件分散、彼此私有。跨物件查詢、全域報表、複雜的資料表結構變更,都不如 PostgreSQL 自然。
Queues 是 Redis 嗎?可以取代 n8n Queue Mode 的 Redis 嗎?
不是,也不能直接取代。Queues 是受管的訊息佇列;Redis 是放在記憶體裡的資料庫。n8n 的 Queue Mode 本來就設計搭配 Redis。
Vectorize 會自動幫我把文字轉成向量嗎?
不會。純 Vectorize 要自己切段、自己呼叫 embedding 模型、自己寫入向量、自己把問題轉向量再搜尋。想要更託管的做法,可以看 AI Search。
Pages 是不是要被淘汰了?
官方沒有宣布停止 Pages。官方的說法是:Workers 已涵蓋 Pages 大部分用途、功能更完整,建議新專案從 Workers 開始。既有的 Pages 專案照常運作。
Worker 可以跑 n8n 嗎?
不適合。n8n 需要 24 小時常駐的主機與自己的資料庫,Worker 是「有請求才執行」的環境。n8n 放在 Zeabur、Cloud Run 或 VPS,前面再用 Cloudflare 的 Tunnel 與 Access 保護,是比較穩的組合。
egress 是什麼?為什麼大家都在講 R2 不收 egress?
egress 是資料從雲端「傳出去」的流量。很多服務存檔便宜,但檔案被大量下載時會收下載費,熱門檔案的帳單可能暴增。從 R2 直接傳出不收這筆錢;但如果你在 R2 前面接了其他按量計費的服務,那些服務可能另外收費。
KV 寫入後多久全世界都讀得到?
通常 60 秒內,但官方不保證,可能更久。所以 KV 只適合「晚幾秒同步也沒關係」的資料。需要馬上一致的狀態,請用 Durable Objects 或資料庫。
可以在自己電腦上開發測試嗎?
可以。wrangler dev 會在本機模擬 Worker 與 KV、D1、R2 等服務,資料預設存在專案的 .wrangler/state 資料夾,不會動到正式環境;除非你設定 remote bindings,刻意連到正式資源。
本頁的數字可以直接拿去報價嗎?
建議不要直接照抄。本頁數字查證於 2026-09-22,Cloudflare 會調整方案與額度;延遲示意與儀表板花費也只是示範。報價前請再對照官方價目頁,並依實際用量試算。
名詞小字典
輸入關鍵字篩選找不到符合的名詞。