Skip to Content
概念限制一覽

限制一覽

提交與壓縮檔

上限值
Multipart 外層2 162 688 B(2 MiB + 64 KiB 額外空間)
壓縮後專案壓縮檔2 MiB
解壓後專案4 MiB
壓縮檔內檔案數256
單一原始碼檔案1 MiB
壓縮檔路徑長度256 UTF-8 位元組,每段 ≤128 字元
Manifest 檔案512 KiB
Lockfile1 MiB
Bundle(建置後)5 MiB
建置回執512 KiB
建置逾時預設 60 秒,夾在 1–120 秒
版本原始碼下載≤ 2 MiB(儲存的專案壓縮檔,逐位元組原樣)

Manifest 與契約

上限值
Operations1–64
Tags1–32
Component schemas≤128
每操作參數≤32
每操作 responses1–20
操作路徑≤512 字元
Schema 深度/節點12/512(節點是整份 manifest 共用的總量)
enum 成員≤100
properties / required各 ≤100
Example16 KiB、深度 12、512 節點、每集合 128 成員、JS 安全整數
靜態資料(src/data/**.json)≤64 檔、每檔 ≤256 KiB、總量 ≤1 MiB、深度 ≤32、≤10 000 節點

閘道(invoke 路徑)

上限值
請求 body1 MiB
回應 body5 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} 請求 body409 600 B(6 × 64 KiB + 16 KiB;在驗證之前回 413)
每次寫入的 salt32 個隨機位元組,由後端產生,從不儲存

操作設定與操作金鑰

逐操作存取與綁定(見逐操作存取)。

上限值
設定清單中的操作≤ 64,且必須剛好是 manifest 的所有操作
每個操作覆寫的 CIDR≤ 64(每條 3–43 字元,不可重複)
所有操作的 CIDR 合計≤ 256
操作設定路由的請求 body65 536 B(/worker/operation-settings 底下任何 PUT/POST/DELETE;在驗證之前回 413)
operation_id^[A-Za-z][A-Za-z0-9_]{0,63}$
base_revision0…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_bytesCLI tarball、每個原始碼 .zip 與每個現成專案壓縮檔皆為 1 – 67 108 864(64 MiB);伺服器在每次下載都會重驗大小與 SHA-256
現成專案壓縮檔仍受 2 MiB 專案壓縮檔上限約束

API 分頁與請求

上限值
offset0–1 000 000
limit1–200(預設 50)
存取政策請求 body16 KiB
執行期設定請求 body73 728 B
操作設定請求 body65 536 B
機密 PUT 請求 body409 600 B
修復請求 body8 KiB
部署請求 body沒有路由層級的上限(可帶 operation_settings)
If-None-Match8 KiB、≤64 個 entity tag
base_revision0…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 鏡像 TTL7 天
回收迴圈每 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.name1–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