觀點 · 資訊分享
Cloudflare Workers 的排程工作本機就能測:Local Explorer 點一下觸發 Cron,AI 代理也能呼叫
Cloudflare 讓本機開發用的 Local Explorer 可以手動觸發 Worker 的 Cron 排程,不必等時間到、也不用自己組網址;同時提供 API,讓腳本與 AI 代理也能觸發測試。
- 發布
- 2026-10-18
- 篇幅
- 約 4 分鐘 · 1,782 字
- 結構
- 6 節 + 3 題常見問題
- 標籤

一句話看懂:Cloudflare 讓開發者在自己電腦上測試 Workers 的排程工作時,可以在 Local Explorer 點一下就觸發,不用等時間到,也能交給腳本或 AI 代理自動測。

先用白話講:Cron 排程是什麼?為什麼難測?
想像你設了一個鬧鐘,每天早上 7 點提醒家人倒垃圾。如果想確認鬧鐘設定對不對,最笨的方法是等到明天早上 7 點,看它會不會響。
程式世界的 Cron 排程就是這種鬧鐘:「每小時整理一次資料」「每天半夜寄報表」。寫好之後要測試,總不能真的等一個小時。以前開發者通常得自己組一個特殊網址去「假裝時間到了」,步驟麻煩又容易打錯。
這次 Cloudflare 在 Local Explorer(本機開發用的管理介面)加了一顆「現在就響」的按鈕。
發生什麼事
Cloudflare 在 10 月 17 日的更新日誌宣布,Local Explorer 可以對 Worker 的 scheduled() 處理函式發送一次性的 Cron 觸發。使用方式:
- 用
cf dev、wrangler dev或 Cloudflare Vite 外掛啟動本機開發伺服器 - 在瀏覽器開啟伺服器網址加上
/cdn-cgi/local/explorer - 選擇 Cron Triggers
在這個畫面可以:
- 觸發設定檔裡已經寫好的 cron 表達式
- 臨時組一個新的 cron 表達式來測
- 儲存常用的排程時間
- 檢查執行結果與
noRetry()狀態
給開發者的技術細節
同樣的功能也有 API,方便寫成自動化測試,或讓 AI 代理呼叫。官方範例用的是 8787 連接埠,Vite 專案請換成自己的連接埠(例如 5173):
curl -X POST \
"http://localhost:8787/cdn-cgi/local/explorer/api/local/scheduled?worker=my-worker" \
-H "Content-Type: application/json" \
--data '{"cron":"0 * * * *","scheduled_time":1745856238000}'
- 版本需求:依官方文件,需要 Wrangler 4.139.0 以上(或 Cloudflare Vite 外掛 1.60.0 以上),而且 Worker 要有匯出
scheduled()處理函式 worker參數要填目標 Worker 的完整名稱cron是要觸發的排程表達式;scheduled_time是選填的排程時間(官方範例的數值看起來是毫秒時間戳,但文件沒有明講單位)- 只存在瀏覽器:臨時觸發與時間預設不會寫進
cloudflare.config.ts、Wrangler 設定,也不會改到已部署的 Cron Triggers - 不會自動跑:本機開發本來就不會依排程自動執行,這裡的觸發都是手動、一次性的
- 完整紀錄:要在擁有該 Worker 的開發工作階段、而且開啟 Observability,才看得到完整的紀錄與追蹤
我的看法
接案常見的需求裡,排程工作佔很大比例:每天同步訂單、定時清快取、半夜產報表。這類程式最容易出事的地方,往往是「平常沒人看著它跑」,出錯了要隔天才發現。
能在本機隨時觸發、還能看到結果,等於把排程工作變回普通函式來測,對品質很有幫助。我比較在意的是 API 這一塊:把它寫進自動化測試,或讓 AI 代理改完程式後自己觸發驗證,就不用每次都手動點。不過要記得,本機測過不等於線上沒問題,正式環境的時區與外部服務連線,還是要另外確認。
名詞小辭典
- Cloudflare Workers:Cloudflare 的無伺服器平台,把程式部署到全球各地的機房執行。
- Cron 表達式:描述「什麼時候執行」的一串文字,例如
0 * * * *代表每小時整點。 - Local Explorer:Cloudflare 本機開發伺服器內建的瀏覽器介面,可以檢視與編輯本機的 KV、R2、D1 等資料,也能看 Worker 的紀錄與追蹤。
- Observability:可觀測性,指收集紀錄、追蹤與指標,讓你看得出程式實際怎麼跑。