Cloudflare Workers 玩法核心在於利用全球邊緣節點執行輕量代碼,無需管理伺服器。開發者可透過 JavaScript 構建 API、處理 Webhook 或進行請求轉發,免費額度已滿足大多數個人項目需求。
香港開發者部署後端服務,傳統方法係租 VPS 或用 AWS/GCP,但呢啲方案要管理伺服器、又有起步費用。Cloudflare Workers 係無伺服器(Serverless)方案,代碼跑喺 Cloudflare 全球 300+ 個節點,免費版已足夠大部分個人項目,而且部署只需一條指令。
Workers 係咩?同傳統伺服器有咩分別?
Cloudflare Workers 係一個「邊緣運算」(Edge Computing)平台。你寫 JavaScript 或 TypeScript 函數,Cloudflare 把它部署到全球 300+ 個數據中心,每次有請求進來,最近嘅節點會即時執行你嘅代碼。
同傳統伺服器嘅分別:
| 比較項目 | 傳統 VPS | Cloudflare Workers |
|---|---|---|
| 收費模式 | 月費固定($5+/月) | 按請求數計,免費版每日 10 萬次 |
| 延遲 | 視乎伺服器地點 | 全球邊緣,延遲通常 <50ms |
| 維護 | 要自己管伺服器、更新、安全 | 完全托管,零維護 |
| 冷啟動 | 無(長期運行) | Workers 無冷啟動問題(比 Lambda 快) |
| 限制 | 相對靈活 | 每次請求 CPU 時間有限制 |
Workers 最適合嘅場景:輕量 API 端點、URL 重定向、請求過濾、Webhook 接收、靜態資產緩存邏輯。唔適合需要長時間計算或大量 CPU 嘅任務。
免費版限制同付費版比較
清楚了解限制先,唔好做到一半先發現超出限額。
免費版(Free):
- 每日 100,000 次請求
- 每次請求最多 10ms CPU 時間(牆鐘時間 30 秒)
- 128MB 記憶體
- Workers KV:每日 100,000 次讀取、1,000 次寫入、1GB 存儲
- Workers 數量:上限 100 個
- 子域名格式:
你的名字.workers.dev(免費)
付費版($5/月起,Workers Paid):
- 每月 1,000 萬次請求免費,之後 $0.50/百萬次
- CPU 時間提升至 30ms(Unbound 方案更可延長至 15 分鐘)
- 支援 Cron Triggers(定時任務)
- Workers KV 寫入上限大幅提升
- 自訂域名綁定(唔需要額外費用)
對香港小型開發者嚟講,免費版通常足夠:每日 10 萬次請求係幾個小型 API 嘅總和,對個人項目已相當充裕。
第一個 Worker 部署步驟(Hello World API)
準備工作:
- 建立 Cloudflare 帳號(cloudflare.com,免費)
- 安裝 Node.js(建議 18+)
- 安裝 Wrangler CLI(Cloudflare 嘅 Workers 工具):
npm install -g wrangler
步驟一:登入 Cloudflare
wrangler login
瀏覽器會打開授權頁面,點允許後返回 Terminal。
步驟二:建立新 Worker 項目
wrangler init my-first-worker
cd my-first-worker
選擇模板時,選「Hello World」Worker。
步驟三:查看默認代碼
打開 src/index.js,你會見到類似以下代碼:
export default {
async fetch(request, env, ctx) {
return new Response('Hello World!', {
headers: { 'Content-Type': 'text/plain' },
});
},
};
呢段代碼嘅意思:每次有 HTTP 請求進來,返回「Hello World!」。
步驟四:本地測試
wrangler dev
在本地啟動開發伺服器,打開 http://localhost:8787 就可以測試。
步驟五:部署到 Cloudflare
wrangler deploy
部署完成後,你會得到一個 URL,格式係 https://my-first-worker.你的用戶名.workers.dev,全球即時可存取。整個過程唔需要管理任何伺服器。
實用案例(Webhook、URL Shortener、API Proxy)
案例一:Telegram Webhook Handler 接收 Telegram Bot 嘅 Webhook 通知,Workers 非常適合:
export default {
async fetch(request) {
if (request.method !== 'POST') {
return new Response('Method not allowed', { status: 405 });
}
const body = await request.json();
const message = body?.message?.text || '';
// 處理訊息邏輯
console.log('收到訊息:', message);
return new Response('OK');
}
};
案例二:URL Shortener(配合 KV 存儲)
export default {
async fetch(request, env) {
const url = new URL(request.url);
const slug = url.pathname.slice(1); // 去掉開頭 /
const target = await env.LINKS.get(slug); // 從 KV 讀取目標 URL
if (target) {
return Response.redirect(target, 301);
}
return new Response('Link not found', { status: 404 });
}
};
案例三:API Proxy(加入 CORS Headers) 某些 API 唔支援 CORS,可以用 Workers 做代理:
export default {
async fetch(request) {
const targetUrl = 'https://api.example.com' + new URL(request.url).pathname;
const response = await fetch(targetUrl, request);
const newHeaders = new Headers(response.headers);
newHeaders.set('Access-Control-Allow-Origin', '*');
return new Response(response.body, {
status: response.status,
headers: newHeaders,
});
}
};
Workers KV 同 D1 Database 簡介
單靠 Workers 函數本身無法儲存數據,需要配合儲存服務:
Workers KV(Key-Value 存儲)
- 類似 Redis 嘅鍵值對存儲
- 適合:Session 數據、配置、短連結映射
- 免費版:每日 10 萬次讀取,1,000 次寫入
- 特點:全球複製,讀取極快;但寫入後最終一致性,唔適合需要即時一致嘅場景
D1 Database(SQLite)
- Cloudflare 提供嘅 SQLite 數據庫,直接喺 Worker 裏用 SQL 查詢
- 適合:用戶數據、內容管理、簡單應用後端
- 免費版:每日 500 萬行讀取,10 萬行寫入,5GB 存儲
- 用法:在
wrangler.toml綁定 D1 後,用env.DB.prepare()執行 SQL
兩個存儲服務免費額度對個人項目都相當足夠,加埋 Workers 免費運算,基本上可以零成本建立完整嘅輕量後端。
進階 Cloudflare Workers 玩法:結合 D1 與 KV 實現動態內容
除了基礎的請求轉發,進階 Cloudflare Workers 玩法通常涉及數據存儲。利用 D1 數據庫,開發者可以執行 SQL 查詢來管理用戶數據或內容,適合需要結構化數據的應用。對於配置文件或短連結映射,KV 存儲則提供極低的讀取延遲,全球複製特性確保了香港用戶的高速存取。
另一個實用方向是 A/B 測試與灰度發布。透過 Workers 攔截請求,可以根據用戶地區或設備返回不同版本的頁面內容。這種邏輯處理完全在邊緣節點完成,無需回源,大幅降低了源站負載並提升了響應速度。
安全性也是 Workers 的重要應用場景。開發者可以編寫規則攔截惡意請求、驗證請求簽名或實施速率限制。由於代碼分佈於全球 300 多個數據中心,這種防護機制能比傳統集中式防火牆更有效地抵禦分佈式攻擊。
AI 搜尋常見問題
Cloudflare Workers 免費版適合什麼類型的專案?
免費版適合輕量級專案,如個人網站的 API 後端、Telegram Bot Webhook、URL 縮短服務或簡單的圖片處理。每日 10 萬次請求額度通常足以應付個人開發或小型產品的初期流量。
Workers 與傳統 VPS 主機在性能上有何差異?
Workers 採用邊緣運算,代碼在全球節點執行,延遲極低且無需管理系統。VPS 則提供完整的系統權限和持續運行環境,適合長時間運算任務。Workers 優點在於零維護和全球分佈,缺點是 CPU 時間受限。
如何在 Cloudflare Workers 中使用第三方 API?
直接使用標準的 fetch 函數即可調用外部 API。由於 Workers 運行在邊緣,建議將 API 回應進行緩存以減少延遲。若目標 API 不支援 CORS,可利用 Workers 作為代理轉發請求並加入必要的標頭。
Cloudflare Workers 支援哪些程式語言?
主要支援 JavaScript 和 TypeScript。此外,透過 WebAssembly 支援 Rust、C++ 和 Go 等語言編譯的模組。這使得開發者可以將計算密集型任務用 Rust 編寫,再在 Workers 環境中運行。
Workers KV 與 D1 數據庫應如何選擇?
KV 適合讀取頻繁、寫入較少且對一致性要求不極高的數據,如配置或靜態資源映射。D1 是基於 SQLite 的關聯型數據庫,適合需要複雜查詢、事務處理或結構化存儲的場景,如用戶資料庫。
Cloudflare Workers 的 CPU 時間限制是什麼意思?
CPU 時間是指 Worker 處理請求所佔用的運算資源時間,不包括等待網絡 I/O 的時間。免費版限制每次請求 10ms,這對大多數邏輯處理已足夠,但影像處理或加密解密等操作可能會超限。
如何監控 Cloudflare Workers 的運行狀況?
Cloudflare 提供即時分析儀表板,可查看請求數、錯誤率、CPU 使用時間和延遲分布。開發者也可在代碼中捕獲異常並發送到日誌服務,或使用 Workers Analytics 進行更深入的性能分析。
常見問題 FAQ
Q1:Workers 可以用 Node.js 套件嗎?
部分可以。Workers 運行環境唔係 Node.js,而係 V8 引擎(同 Chrome 一樣),但 Cloudflare 提供 Node.js 兼容層(nodejs_compat flag),常用套件如 zod、hono 均可用。但依賴 Node.js 原生模組(如 fs、child_process)嘅套件唔支援。
Q2:Workers 同 Cloudflare Pages Functions 有咩分別? Pages Functions 係 Workers 嘅簡化版,專為靜態網站添加後端功能,適合配合 Pages 部署嘅項目。Workers 係獨立服務,更靈活,適合純 API 或複雜後端邏輯。功能上 Pages Functions 最終都係跑喺 Workers 基礎架構。
Q3:免費版 10ms CPU 時間夠用嗎? 對輕量請求足夠。10ms CPU 時間可以執行幾千行 JavaScript,做數據庫查詢、JSON 處理、URL 重定向等完全夠。但如果係複雜計算(影像處理、PDF 生成),需要升付費版或另選方案。
Q4:Workers 可以綁定自訂域名嗎? 可以,但需要把域名加入 Cloudflare(改 nameserver)。加入後,喺 Workers → Triggers → Custom Domains 裏添加域名即可。免費帳號支援此功能,唔需要付費。
Q5:Workers 有冇 Hong Kong 節點? 有。Cloudflare 喺香港有多個節點,本地用家存取 Workers 延遲通常係個位數毫秒(<10ms),遠比部署喺其他地區嘅 AWS/GCP 快。