Cloudflare 邊緣運算

告別冷啟動:Cloudflare Workers、Pages 與 V8 隔離區技術解密

Cloudflare Workers 不用容器或虛擬機起機,而是在同一個常駐執行環境裡切換上千個 V8 隔離區,才讓冷啟動幾乎感受不到。Pages Functions 底層其實也是跑在 Workers 之上。官方在 2026 年的建議是新專案優先從 Workers(含靜態資產)起步,Pages 仍受支援,但新功能重心已經轉向 Workers。
告別冷啟動:Cloudflare Workers、Pages 與 V8 隔離區技術解密:文章重點卡

告別冷啟動:Cloudflare Workers、Pages 與 V8 隔離區技術解密

我第一次看到「Workers 幾乎沒有冷啟動」這句話時,直覺反應是不太相信,畢竟每次呼叫函式都要重新準備執行環境,這件事在傳統無伺服器架構裡本來就是躲不掉的成本。

後來去翻官方文件才理解,Workers 從一開始就沒有打算走容器或虛擬機那條路。這篇要把 V8 隔離區到底做對了什麼、它跟 Cloudflare Pages 是什麼關係,以及 2026 年官方對這兩者的定位講清楚。

你將學到什麼

V8 隔離區是什麼

不為每次呼叫重新開機,而是在同一個執行環境裡切換上千個輕量隔離區。

Pages 與 Workers 的關係

Pages Functions 底層其實就是跑在 Workers 之上,只是多包了一層網站部署流程。

2026 年官方怎麼建議

新專案起步優先選 Workers(含靜態資產),Pages 仍受支援但重心已轉向 Workers。

微前端與邊緣路由

用一支 Worker 當路由層,把不同團隊的前端片段拼裝在同一個網域底下。

傳統無伺服器架構最讓人無奈的,就是那句「請稍等,正在為您啟動執行環境」。Cloudflare Workers 想解決的正是這一刻。

冷啟動問題從哪裡來

多數無伺服器平台的做法,是替每個工作負載準備一份完整的容器或虛擬機,裡面帶著自己的作業系統與語言執行環境。

請求久久沒進來,這份環境就會被回收;下一個請求進來時,平台得重新把整份環境準備好,這段等待就是所謂的冷啟動。

官方文件把這件事講得很直接:容器化的行程開機,成本就是要重新載入一整份系統層級的東西,這是架構本身就帶來的代價。

V8 隔離區:不必重開機的執行單元

Workers 的做法不是替每個工作負載準備一份完整環境,而是讓一個常駐的執行環境同時容納大量輕量的隔離區。

官方文件形容,單一份 Workers 執行環境可以同時容納成百上千個隔離區,在它們之間快速切換,而不是逐一重新啟動。

  • 記憶體各自獨立:每個隔離區有自己的記憶體空間,彼此看不到對方的資料,即使同一台機器上跑著其他人的程式碼也不互相干擾。
  • 啟動成本只付一次:常駐執行環境的開機成本,是整份環境共用分攤,不是每個隔離區各自重新負擔一次。
  • 不是永久存在:隔離區仍可能因資源調度或安全考量被回收,不適合拿全域變數當成可靠的長期狀態保存位置。
全域變數不是保險箱

官方文件明白提醒,隔離區可能被回收,寫在全域範圍的變數沒有持久保證。真的需要跨請求保留的狀態,該找 Durable Objects 或外部儲存服務,而不是賭隔離區一直不被回收。

容器/虛擬機模式系統+執行環境 A每次要重新開機系統+執行環境 B每次要重新開機系統+執行環境 C每次要重新開機V8 隔離區模式常駐 Workers 執行環境隔離區 A隔離區 B隔離區 C隔離區 D隔離區 E隔離區 F請求直接切換到對應隔離區
容器模式每個工作負載自帶一份系統要開機,隔離區模式共用一份常駐環境直接切換。

Cloudflare Pages 其實跑在 Workers 上面

Cloudflare Pages 一開始定位是靜態網站託管,帶著 Git 整合與預覽部署,對前端團隊很友善。

當你在 Pages 專案裡加上後端邏輯,也就是 Pages Functions,官方文件說得很清楚,那層邏輯執行在 Workers 之上,Workers 的執行環境特性一併帶了過來。

換句話說,Pages 更像是替 Workers 包了一層貼近前端工作流程的部署介面,底層運算模型是同一套。

2026 年該怎麼選:官方的建議起點

Workers 後來加上了原生的靜態資產託管能力,也就是可以直接在 Workers 專案裡設定要發布的靜態檔案,不必額外綁 Pages。

官方也提供了正式的「從 Pages 遷移到 Workers」指南,並指出 Workers 能用到 Durable Objects、Cron Triggers 這類目前 Pages 專案拿不到的能力。

面向Cloudflare PagesCloudflare Workers(含靜態資產)
定位以靜態網站與 Git 部署流程為核心統一的邊緣運算平台,靜態與動態都能處理
功能廣度維持既有功能,持續受支援官方新功能與最佳化重心所在,如 Durable Objects、Cron Triggers
適合情境純前端、行銷頁這類不太需要進階後端能力的專案打算後續加動態邏輯,或需要與 Workers 生態其他服務整合的專案

既有 Pages 專案不必因此緊急搬家,官方也沒有把 Pages 標成棄用。但如果是全新啟動的專案,官方傾向的起點已經是 Workers。

微前端與邊緣路由:什麼時候用得上

多團隊各自維護一塊前端,是很常見的組織現實,行銷頁、會員中心、部落格常常分屬不同專案與不同部署節奏。

用一支 Worker 擋在最前面做路徑判斷,符合條件就轉發到對應的來源,使用者感受到的是同一個網域下的完整網站,各團隊背後仍然獨立部署。

這個做法的價值是部署解耦,不是單純衝效能,決定要不要導入之前,先確認團隊分工是否真的需要這一層獨立性,不然只是多一層維運成本。

落地前的三個檢查點

  1. 確認要用到的功能,例如 Durable Objects 或 Cron Triggers,是不是只有 Workers 支援,Pages 專案拿不到。
  2. 凡是需要跨請求可靠保存的資料,不要放在隔離區的全域變數裡,改用 Durable Objects 或外部儲存服務。
  3. 多團隊共用同一網域的情境,先確認是不是真的需要邊緣路由這層解耦,再決定要不要導入。
本文源起本文依 Cloudflare Workers 官方文件(How Workers works)、Pages Functions 官方文件與「從 Pages 遷移到 Workers」官方指南整理,由酒Ann 以自己的視角編寫成中文導覽。實際功能範圍與官方建議請以 Cloudflare Workers 官方文件 為準,2026 年 8 月查閱。

延伸學習

把這篇文章分享給需要的人FacebookLINEThreadsX

常見問答

V8 隔離區跟容器、虛擬機最大的差別是什麼?
容器與虛擬機的模式,是每個工作負載各自帶著一份作業系統或執行環境,開機本身就要花時間與記憶體。官方文件說明,隔離區是在同一個已經常駐的執行環境裡,直接切換到另一段程式碼與記憶體空間,不需要重新啟動任何系統層級的東西。這也是為什麼官方形容隔離區的啟動速度,跟容器化的 Node 行程比起來有明顯量級差異,記憶體占用也小得多。
Workers 只能寫 JavaScript 嗎?
不是。Workers 原生支援 JavaScript 與 TypeScript,也能跑編譯成 WebAssembly 的程式碼,官方文件另外有專門的 Python Workers 說明頁面,介紹在特定執行環境下用 Python 撰寫 Workers 的方式。實際支援的語言與執行細節會隨版本調整,動手前建議先查當期的官方語言支援頁面。
Cloudflare Pages 是不是快要被淘汰了?
官方沒有把 Pages 標成棄用,既有的 Pages 專案可以繼續運作。但官方也明確把往後的新功能與最佳化重心放在 Workers 上,並提供了正式的「從 Pages 遷移到 Workers」指南,理由是 Workers 能用到 Durable Objects、Cron Triggers 這類 Pages 沒有的能力。對正在啟動的新專案來說,這代表起步時值得先把 Workers 當成預設選項。
隔離區裡的變數會一直留著嗎?
不一定。官方文件提醒,隔離區雖然啟動快、也會被重複使用,但並不是永久存在,可能因為資源調度或安全考量被回收。如果把需要長期保存的狀態直接寫在程式的全域變數裡,沒有另外設計備援機制,資料有可能在隔離區被回收時消失。需要跨請求可靠保存的狀態,通常要另外搭配像 Durable Objects 或外部儲存服務。
什麼情況適合把前端整個放到邊緣做路由?
如果你的網站是由多個團隊各自維護不同區塊,例如行銷頁、會員中心、部落格分屬不同專案,用一支 Worker 在邊緣做路徑比對再轉發到對應的來源,可以讓使用者從單一網域拿到統一的體驗,同時各團隊仍能獨立部署。這種微前端式的邊緣路由,價值在於部署解耦,不是單純為了效能,實際要不要採用,取決於團隊分工是否真的需要這層獨立性。