跳转到内容

Bindings (`env`)

env 只包含部署声明过的名字。Version Metadata 是平台注入的只读对象:id、tag、timestamp。

export default {
async fetch(request: Request, env: Env): Promise<Response> {
const version = env.VERSION.id;
return env.AUTH.fetch(request);
},
} satisfies ExportedHandler<Env>;
import { bindings, defineConfig } from "cf/config";
export default defineConfig({
worker: {
name: "front",
entrypoint: "src/index.ts",
env: {
AUTH: bindings.worker({ worker: "auth-worker" }),
VERSION: bindings.versionMetadata(),
},
},
});

Service Binding:默认/具名 fetch 和 RPC。目标是同 instance、可解析的唯一 Worker 名、operator 配置的扩展 slug,或固定私网 HTTP target;部署时冻结 target identity 与 policy revision。可选 entrypoint。私网 HTTP target 只暴露 fetch。没有新的公开 Binding 类型。

KV / R2 / D1 / DO / Queue / Workflow / Assets / Images 的成员签名见各产品文档。配置语法见 绑定。

主题 Cloudflare open-compute
env.BINDING 类型 是,见 Bindings 与 Service bindings 是
Version Metadata 字段 是,见 version metadata id、tag、timestamp
Service Bindings 跨地域 placement / 全球 service discovery 仅限本平台;默认/具名 fetch 与 RPC;调用方准入与部署钉扎均在本机判定;失败则关闭
Dynamic Workers / Worker Loader Loader API 原生 load/get、模块、entrypoint/RPC、user tails、动态 DO facets 及显式/委托 limits;实验控制未开放
Workers for Platforms dispatcher 是 不提供
mTLS / Rate Limit / Secrets Store / AI binding 是 不提供

声明 worker_loaders: [{ binding: "LOADER" }] 后,env.LOADER 使用原生 WorkerLoader API。 get(id, callback) 的同一 ID 必须对应不可变代码;不要依赖缓存命中或 callback 次数。 namespace 按账号、Script 和 binding 隔离;Version 回滚保留 namespace,删除后同名重建获得新的 namespace。 每个 Worker invocation 最多 4 个 distinct child,DO context 最多 10 个;同一 child 并发只计一次。

显式 limits 使用官方 cpuMs 和 subRequests 字段;{} 选择 Standard 默认值,child、entrypoint 与继续 委托的 Loader ceiling 按各维最严格值组合。CPU、内存、启动、子请求及同时 outbound connection 限额由固定 workerd fork 原生执行。非空 streaming tails 与两个 experimental-control members 仍未开放。Dynamic Python child cold boot 因本地 Pyodide bootstrap 无法稳定满足官方 1 秒 startup CPU 限额而未取得资格;JavaScript、 Wasm、RPC、动态 Durable Object facets 与 limits 已取得资格。差异见行为差异。

structured-clone 值与 Service Binding 可直接通过 load({ env }) 传递。KV、D1、R2 与 Queue binding 应通过 open-compute helper 转发,以保留 binding boundary,而不是尝试 clone resource object:

import { loadWorker } from "open-compute:worker-loader";
const child = loadWorker(env.LOADER, {
...code,
env: { CACHE: env.CACHE, DB: env.DB, BUCKET: env.BUCKET, QUEUE: env.QUEUE },
});

当前认证日期 2026-09-08 对应的固定 Pyodide bundle 随 ocd 内嵌,经校验后从实例私有 runtime cache 加载;其它官方 child 日期/flag 组合保留 workerd 的原生版本选择。 已执行的 Version 仍持有 generation 后台引用时, Script 删除返回 409;generation 结束后才可删除。本地自动收集 child 日志是平台能力, 并非 Cloudflare 默认将 child 日志写入 parent Workers Logs 的行为。