限制一覽
提交與壓縮檔
| 上限 | 值 |
|---|---|
| Multipart 外層 | 2 162 688 B(2 MiB + 64 KiB 額外空間) |
| 壓縮後專案壓縮檔 | 2 MiB |
| 解壓後專案 | 4 MiB |
| 壓縮檔內檔案數 | 256 |
| 單一原始碼檔案 | 1 MiB |
| 壓縮檔路徑長度 | 256 UTF-8 位元組,每段 ≤128 字元 |
| Manifest 檔案 | 512 KiB |
| Lockfile | 1 MiB |
| Bundle(建置後) | 5 MiB |
| 建置回執 | 512 KiB |
| 建置逾時 | 預設 60 秒,夾在 1–120 秒 |
| 版本原始碼下載 | ≤ 2 MiB(儲存的專案壓縮檔,逐位元組原樣) |
Manifest 與契約
| 上限 | 值 |
|---|---|
| Operations | 1–64 |
| Tags | 1–32 |
| Component schemas | ≤128 |
| 每操作參數 | ≤32 |
| 每操作 responses | 1–20 |
| 操作路徑 | ≤512 字元 |
| Schema 深度/節點 | 12/512(節點是整份 manifest 共用的總量) |
enum 成員 | ≤100 |
properties / required | 各 ≤100 |
| Example | 16 KiB、深度 12、512 節點、每集合 128 成員、JS 安全整數 |
靜態資料(src/data/**.json) | ≤64 檔、每檔 ≤256 KiB、總量 ≤1 MiB、深度 ≤32、≤10 000 節點 |
閘道(invoke 路徑)
| 上限 | 值 |
|---|---|
| 請求 body | 1 MiB |
| 回應 body | 5 MiB(以 64 KiB chunk 串流) |
| 解碼後路徑 | 2048 字元且 2048 UTF-8 位元組 |
| Percent-encoded 路徑 | 4096 字元 |
| Query(form-encoded) | 1024 位元組 |
| 調度斷言(compact JWS) | 8192 位元組 |
| 斷言存活時間 | 30 秒(nbf = iat − 2 秒偏差;dispatcher 容忍 5 秒偏差) |
| 控制指令/回應 | 指令在後端 ≤ 1 MiB,runtime 只接受 ≤ 256 KiB(通過後端但更大的指令會被拒絕為 422 control_request_invalid);回應 ≤ 256 KiB |
| 後端 → dispatcher 逾時 | (5 秒連線, 35 秒讀取),不跟隨轉址 |
| Dispatcher → 使用者 Worker(雲端) | 預設 CPU 50 ms、500 個子請求 — 對外 fetch() 的唯一界限;沒有 Outbound Worker,目的地不受限制(原始 TCP connect() 在兩種 runtime 上都不可用:無法匯入 cloudflare:sockets)。超過 → 429 worker_limit_exceeded。地端使用不同的每 Worker 限制:見最後一節 |
| — 簽章通道(閘道、控制) | 斷言的 limits claim,由後端依 EDGE_WORKERS_LIMIT_CPU_MS/EDGE_WORKERS_LIMIT_SUBREQUESTS 鑄造(預設 50/500,允許 1–30 000/1–1 000;其他值 → 後端拒絕簽章,503) |
— 公開通道,或沒帶 limits 的斷言 | dispatcher 變數 EDGE_WORKER_CPU_MS/EDGE_WORKER_SUBREQUESTS = 兩個環境皆 50/500(解析 fail-closed 1–30 000/1–1 000;不合法 → 503 dispatcher_unavailable) |
| 後端 → Cloudflare 控制面 | 上傳逾時 (5, 30);回讀 (5, 15);JSON 回應上限 64 KiB(以解碼後位元組計) |
Runtime(部門 Worker)
| 上限 | 值 |
|---|---|
| 儲存 key | ≤512 UTF-8 位元組 |
| 儲存 value | ≤64 KiB 正規 JSON、深度 <32、≤10 000 節點、僅普通物件/稠密陣列 |
list 分頁 | 預設 50、最大 100(游標 nextStartAfter) |
| 執行期設定 | ≤64 KiB、≤256 個頂層鍵、鍵 1–256 UTF-8 位元組(無 NUL)、深度 ≤32、≤10 000 節點、JS 安全整數 |
| Worker 層級的 IP 允許清單 | ≤64 條 CIDR(每條 3–43 字元) |
| 未結控制回執 | 1024(已確認的列會被清除;未確認的永不被逐出 — 滿載時新變更以 422 control_request_invalid 失敗) |
Worker 機密
儲存在部門 Worker 的 Durable Object 內、僅可寫入的機密(見 Worker 機密)。後端與 runtime 各強制執行一次。
| 上限 | 值 |
|---|---|
| 每個 Worker 的機密數 | 256(超過後的新名稱 → 409 secret_limit_exceeded;取代既有名稱不計入) |
| 名稱 | 1–64 字元,^[A-Z][A-Z0-9_]{0,63}$;以 TEAMSYNC_ 開頭的名稱為保留 |
| 值 | 非空字串、不含 NUL、合法 Unicode、≤ 65 536 UTF-8 位元組(64 KiB) |
| 所有值合計 | ≤ 16 MiB = 16 777 216 UTF-8 位元組(超過 → 413 secret_size_exceeded) |
PUT /worker/secrets/{name} 請求 body | 409 600 B(6 × 64 KiB + 16 KiB;在驗證之前回 413) |
| 每次寫入的 salt | 32 個隨機位元組,由後端產生,從不儲存 |
操作設定與操作金鑰
逐操作存取與綁定(見逐操作存取)。
| 上限 | 值 |
|---|---|
| 設定清單中的操作 | ≤ 64,且必須剛好是 manifest 的所有操作 |
| 每個操作覆寫的 CIDR | ≤ 64(每條 3–43 字元,不可重複) |
| 所有操作的 CIDR 合計 | ≤ 256 |
| 操作設定路由的請求 body | 65 536 B(/worker/operation-settings 底下任何 PUT/POST/DELETE;在驗證之前回 413) |
operation_id | ^[A-Za-z][A-Za-z0-9_]{0,63}$ |
base_revision | 0…9 007 199 254 740 990 |
| 設定鎖 | 每個部門同一時間只能有一個設定變更、操作金鑰變更或部署請求;鎖在 600 秒後到期 |
| 操作金鑰 | tsw_ + 43 個 url-safe 字元(共 47),只顯示一次 |
服務帳號
見服務帳號。
| 上限 | 值 |
|---|---|
| 每個部門或公司的服務帳號數 | 無上限;不計入公司使用者上限 |
| 同一個 UTC 秒內建立的名稱 | 99(EdgeWorkerSA-<timestamp>,之後是 -2 … -99;再來是 409 Service account name is unavailable) |
| 每個部門 Worker 的已交付憑證 | 256(超過 → 409 service_account_limit_exceeded) |
| 清單與聊天室候選分頁 | limit 1–100(預設 100);cursor 最大 1 000 000 |
| 詳情檢視的聊天室 | 前 500 個(rooms_truncated 指出是否還有更多) |
| 每次呼叫的聊天室變更 | 新增 ≤ 100 個 id、移除 ≤ 100 個,且兩者不重疊 |
bound_operations / unbound_operations | 各 ≤ 64(每個 Worker 的操作上限) |
候選搜尋 q | ≤ 128 字元 |
Worker 端登入(context.teamsync.authHeaders()) | 5 秒逾時,遇 401 或 429 時等 1 秒後重試一次,access token 重複使用,直到到期前 60 秒為止,驗證回應 ≤ 64 KiB |
| 服務帳號路由 | 沒有路由專屬的 body 上限(一般 router) |
範本與 CLI 下載
| 上限 | 值 |
|---|---|
| 目錄內的範本 | 1–32 項(5.22.0 映像附兩項:同一個範本的 JavaScript 與 TypeScript 版) |
目錄產物的 size_bytes | CLI tarball、每個原始碼 .zip 與每個現成專案壓縮檔皆為 1 – 67 108 864(64 MiB);伺服器在每次下載都會重驗大小與 SHA-256 |
| 現成專案壓縮檔 | 仍受 2 MiB 專案壓縮檔上限約束 |
API 分頁與請求
| 上限 | 值 |
|---|---|
offset | 0–1 000 000 |
limit | 1–200(預設 50) |
| 存取政策請求 body | 16 KiB |
| 執行期設定請求 body | 73 728 B |
| 操作設定請求 body | 65 536 B |
機密 PUT 請求 body | 409 600 B |
| 修復請求 body | 8 KiB |
| 部署請求 body | 沒有路由層級的上限(可帶 operation_settings) |
If-None-Match | 8 KiB、≤64 個 entity tag |
base_revision | 0…9 007 199 254 740 990(部署請求:僅 ≥0,無上限) |
任務層
| 上限 | 值 |
|---|---|
| 部署嘗試 | 總共 2 次租約取得 |
| DB 租約/心跳 | 90 秒/30 秒 |
Release 就緒等待(completed 之前) | 600 秒輪詢截止點(後端 5.22.0 之前為 60 秒),退避 1 → 2 → 4 → 5 秒;截止點之後不再啟動探測,每次探測在 40 秒或到達截止點時被中斷;始終沒回應 → uncertain worker_readiness_timeout |
| Redis 投遞認領/心跳 | 30 秒/10 秒 |
| 票證 Redis 鏡像 TTL | 7 天 |
| 回收迴圈 | 每 60 秒,每通道批次 50 |
| 回收寬限(部署) | 300 秒 |
| 清理意圖寬限/租約 | 900 秒/300 秒 |
| 控制面稽核寬限/租約/回執嘗試 | 300 秒/120 秒/3 |
| 失敗退避階梯 | 15 → 30 → 60 → 120 → 240 → 480 → 960 → 1920 → 3600 秒 |
| R2 project/bundle 物件 | 2 MiB/5 MiB(讀取時重驗大小 + SHA-256) |
身分與命名
| 上限 | 值 |
|---|---|
module.name | 1–64 kebab-case |
module.version | 精確 SemVer,5–64 |
operationId | ^[A-Za-z][A-Za-z0-9_]{0,63}$ |
| Script 名稱 | dw- + 48 hex(51 字元,推導而來,不可選擇) |
| API 金鑰 | tsw_ + 43 個 url-safe 字元(共 47),Worker 層級金鑰與每個操作金鑰皆同 |
| 依賴目錄 | 僅精確釘死的項目 — 目前是 zod@4.3.6 |
地端每個 Worker 的限制
地端部署(見地端 Edge Workers)讓每個部門 Worker 在主機上以自己的行程執行,所以上面雲端的 CPU 與子請求列不適用。以下是後端 5.21.0 時 Worker 主機的預設值;操作者可以調整其中被點名的項目。
| 上限 | 值 |
|---|---|
| 每次呼叫的時間 | 牆鐘時間,EDGE_HOST_INVOCATION_TIMEOUT_MS(預設 30 000 ms;不超過 300 000 的正整數會被採用,其他任何值,包括更大的值,都會退回預設);超過 → 429 worker_limit_exceeded。沒有逐次呼叫的 CPU 上限 |
| CPU 看門狗 | 主機每 1 秒探測每個 Worker;連續 2 次探測失敗 → 行程被砍掉並重啟;10 分鐘內發生 3 次 → 隔離 5 分鐘,倍增至最多 1 小時,期間回 503 worker_unavailable |
| 記憶體 | JS heap 128 MiB(超過會砍掉並重啟行程);常駐記憶體 512 MiB(砍掉並重啟) |
| 儲存 | 每個 Worker 2 GiB;超過預算 → Worker 被停止(503 worker_unavailable),資料保留,啟用以 edge_host_storage_exceeded 失敗,直到操作者調高預算 |
| 子請求 | 同樣是 500 的預算,但以 Worker 行程為單位共用:並行的呼叫共用同一個池。耗盡時在 Worker 的 fetch() 內丟出 Too many subrequests (TeamSync on-prem subrequest limit);沒被捕捉就是 500 worker_execution_failed |
| Worker 啟動或切換期間暫留的請求 | 最長 EDGE_HOST_HOLD_MS(預設 30 秒),每個 Worker 最多 256 個、每個請求 1 MiB、每個 Worker 16 MiB、整台主機 64 MiB;超過任一項或逾時 → 503 worker_unavailable |
| 日誌 | 每個 Worker 每秒 200 行與 256 KiB(突發 ×2);超出的部分被丟棄 |
| 每台主機的 Worker 數 | 預設 50(EDGE_HOST_MAX_WORKERS);超過後的第一次啟用以 edge_host_capacity_exhausted 失敗 |
| 相容日期 | 不得晚於主機釘選的 runtime(5.21.0 套件為 2026-09-24);更新的日期 → edge_host_compatibility_date_unsupported |
Last updated on