一个网站能打开,只是开始。用了几周以后,问题会变得更具体:手机怎么访问,朋友能看哪些内容,文件放在哪里,任务断了能否继续,暂时不用时会不会还在付费。
本手册从这些问题出发。它不要求先学完 Cloudflare,也不把服务组合当作唯一答案。已有服务器、数据库和工作方式都可以保留,只在出现实际需要的地方加入新的能力。
读完选中的路线后,你应能画清一次请求经过谁、身份在哪里核验、任务与成果如何保存;再用配套离线例子检查一个具体机制。陌生词可以查术语小词表,精确命令见例子与实施参考。配套练习默认离线,使用合成输入。实际部署的配置条件和验证步骤在各节说明。
原有条目沿用 2026-10-02 的核验范围;本次新增观测、PiHarness、互联网搜索、临时分享及 R2 费用说明,来源查阅截至 2026-10-03。严格机器认证、Tunnel API 与 Sandbox 接口另于 2026-10-05 定向核验,不刷新全书事实。不同条目的核验范围见来源说明。决策模型的供应路径另见Clef 与 Jev 比较,详细代码和状态约束见实施参考。邮件服务不在本期范围内。
01 / 从手边的事情开始#
如果只是想发布网页或小 API,从第 2–3 章开始就够了。已有本机或 VPS 服务,希望安全访问,重点读第 4 章。内容与文件的保存看第 5 章;自动化经常重复、超时或丢结果,看第 6 章。
检索、模型与 agent 执行分别在第 7–9 章。系统已经能运行,却越来越难维护,可以直接读第 10–13 章。各章不构成强制施工顺序。
从同一个三份文档小资料架开始:直接打开、读完、下载,先取得一个完整结果。之后需要限制读者、保存版本、生成索引时,再沿相应章节扩展。它使用合成输入,没有云端依赖。
本手册解释做法;配套《Cloudflare 新发布观察》记录当期产品变化和价格时间线。工具名或价格影响决策时,可通过文内来源编号回查。
02 / 给一个请求找路#
先分清:入口、程序、数据#
浏览器输入一个 hostname / 主机名,先找到服务入口,再由程序处理请求,最后按需要读取数据库或文件。DNS / 域名解析把名称映射到网络位置;HTTPS 保护传输;Worker 可以在 Cloudflare 上运行程序;Tunnel 则把入口连接到仍在本机或服务器运行的程序。S45 S47
因此,小应用有两种同样合理的起点。第一种是 Worker 加必要的数据存储。第二种是 Access/Tunnel 加现有应用,数据库继续留在原来的服务器。选择取决于程序需要什么环境,不取决于控制台里有多少服务可以开。
| 路线 | 请求怎样走 | 程序与数据在哪里 |
|---|---|---|
| 新建边缘应用 | 浏览器 → Worker → 绑定的数据资源 | 应用运行在平台上,按需选择存储 |
| 保留已有服务 | 浏览器 → Access(需要时)→ Tunnel → 原应用 | 仍由原设备/服务器运行 |
这是两种常见组合,不要求一个项目同时采用。
绑定:把资源交给应用,而不是交出整套账户#
在 Worker 里,env.DB 可以指向一项 D1 数据库,env.FILES 可以指向一个 R2 bucket。这种 binding / 资源绑定是部署时给予程序的能力,通常不需要在业务代码里再携带账户管理 key。S45
可以把三件事分开记:管理工具负责创建和部署资源;binding 让应用使用被分配的资源;应用再决定哪位用户能读写哪些内容。
同一账户的 Worker 之间,可以用 Service Binding 调用指定服务,减少公网入口和重复凭据。调用关系由部署配置和可靠身份建立;请求里随手加一个 x-service-id,并不能自己证明是谁发来的。S57
想一想:Worker 已绑定一个私有 bucket,是否就能让所有访问者读取其中的文件?
展开答案与解释
答案:不能。 binding 让程序访问资源,最终用户仍需由应用核验身份与读取资格。资源绑定不替代用户权限判断。
03 / 发布第一个小入口#
先选一个很容易判断对错的功能#
一个 endpoint / 请求入口是服务约定处理请求的地址与方法;例如下面这个健康入口。健康检查适合起步:GET /health 返回固定 JSON,未知路径返回 404,不读取文件、不调用模型、不接受业务写入。这样一旦响应不对,排查范围很小。
随包的 examples/health-worker/ 已有完整源码、配置模板和测试。它还检查 HEAD 与不允许的方法;人读手册时先理解行为,实施时再打开完整文件。
| 发出的请求 | 应得到什么 |
|---|---|
GET /health |
200,固定 JSON |
HEAD /health |
200,没有正文 |
POST /health |
405,注明允许的方法 |
GET /missing |
404 |
| 请求夹带私有头 | 响应不回显这些内容 |
在仓库根目录,可先做离线检查:
node --test examples/health-worker/worker.test.mjs
python3 tools/check.py
这检查的是示例行为和资料一致性,不会登录或部署 Cloudflare。健康响应本身也只证明这个 handler 工作,不能代表所有数据库与外部依赖都正常。
再接入开发与部署工具#
当前 cf CLI 处于公开 beta,Wrangler 仍受支持。新项目可沿官方脚手架选择工具;既有项目不需要为了新命令立即迁移。记录实际版本与依赖锁文件,比依赖某台机器的全局安装更容易重建。S02 S03 S66
采用 Wrangler 且已在项目里安装固定版本时,可先启动本地开发:
npx --no-install wrangler dev --port 8787
然后在另一终端请求本地 /health 和 /missing。本地通过后,再核对目标账户、路由和配置,执行单独的远端部署。完整命令与模板留在实施参考中;本包没有替读者安装工具或创建生产入口。
在新项目中取得同一个小入口#
还没有 Worker 项目时,在仓库以外的新目录运行官方脚手架:
npm create cloudflare@latest -- my-first-worker
cd my-first-worker
选择 Hello World、Worker only、JavaScript,初次部署选 No;将本仓库 index.mjs 的 handler 放进新项目的 src/index.js,保留脚手架生成的 dependency 与 lockfile,再按该项目的开发命令检查 /health。脚手架下载需要网络,不属于本包离线例子的执行结果。S113
deployment / 部署是将已检查的代码与配置交给指定运行环境。首次公开部署前,选定目标 account 和对外地址,再按实施参考的 Worker 路线执行;不要将模板中的禁止公开入口设置当成已经发布。只有静态资料页的需求,也可以从公开资料架停下,不必继续加数据库、身份和模型。
前端加入后,多检查一次缓存#
Workers Static Assets 可把网页与 API 一起发布。要确定静态资源和 Worker 的处理顺序,避免 SPA fallback 把不存在的 API 变成一张“看起来正常”的首页。静态资源与动态请求也有不同计费规则。S46 S34
私人 PWA 可以先只缓存公开壳,私有 API 使用 no-store。检查退出登录、切换用户和更新旧版本之后的行为:用户已经离开,并不意味着浏览器里保存过的内容自动消失。
04 / 私人服务的门与钥匙#
先分享一个短期 demo#
已经在本机打开的小资料架,只想给两位朋友看,可以先用 Protected Quick Tunnel 的邮箱 PIN,不必先配正式域名。--allowed-mail 是可选限制;没有它的普通 Quick Tunnel 仍向拿到 URL 的人开放。电脑关机或 cloudflared 停止后,访问也停止。S109
cloudflared tunnel --url http://localhost:8080 --allowed-mail 'alice@example.com,bob@example.com'
这是供读者另外执行的网络命令,本仓库没有启动 Tunnel。先试允许邮箱、另一个不允许的邮箱,再停止连接器确认入口失效;完整步骤与开发限制见临时给几个人看本地 demo。长期私有服务继续读下面的 Access 路线。
能到达,不等于有权使用#
Access 可以保护一个 hostname 或指定路径,让用户先完成身份验证。应用依赖该身份时,应验证 JWT / 签名令牌的签名、issuer、audience 与有效期,而不是只看请求头是否存在。S48
拿到可信身份之后,应用继续决定角色、资源和动作。没有必要机械地再叠几份 bearer;额外凭据应当服务于单独撤销、机器作用域或动作确认,而不是仅仅增加层数。
对机器客户端,Service Tokens 能避免模拟网页登录。按用途单独签发,设置有效期和撤销方式,再映射到允许的操作范围。浏览器里的长期秘密、多人共用的万能 key,都不适合作为这种边界。S49
严格 Service Token 认证(定点核验于 2026-10-05)。 启用严格设置后,带 Service Token 请求头的请求只按 Service Auth 策略判定:不再接受 Allow 策略或用户 cookie;认证/授权失败返回 401/403,不再 302 跳转登录;成功请求也不会得到可复用的 CF_Authorization cookie,调用方每次都须继续携带 Service Token 请求头。在 2026-10-05 或之后创建的新组织强制启用且不能关闭;此前的组织仍可自行配置。远程 MCP 的 OAuth 属于另一条路线,不要与 Service Token 混为一谈。S49 S116
不只测“自己能打开”#
上线前也试匿名用户、已登录但没有资格的用户、过期 token 和错误 audience。再列出所有替代入口:默认开发域名、其他 Custom Domain、预览地址、源站直连。保护一个域名,不会自动证明另一条路也安全。
Cookie 会话的写请求还要处理 CSRF/Origin。私人数据应在权限检查以后读取,而不是先取得完整内容,再靠界面藏按钮。
已有服务器:Tunnel 只改变访问方式#
Tunnel 由源站连接器主动向 Cloudflare 建立连接,把指定 hostname 的请求送到原应用。它不替原设备运行程序,不备份磁盘;笔记本关机后,程序仍会停。S47
ingress:
- hostname: app.example.com
service: http://127.0.0.1:8080
- service: http_status:404
这只是示例结构。端口要对应实际监听,最后一条为未知入口提供兜底;源站若还另开公网端口,仍需检查是否绕过访问限制。
顺序可以很朴素:先确认本机 HTTP 正常,再检查连接器与 Tunnel,最后从外部验证 hostname 和权限。Quick Tunnel 适合短暂试验,长期入口使用可管理的命名配置。升级、日志和恢复方式依然属于服务器维护的一部分。
普通 HTTP ingress 不受 2026 年私有路由与连接端点变更影响;若另有脚本自行维护私有网段路由或读取 tunnel 连接,见实施参考的维护提示。该提示不新增可执行集成。S117
MCP 与私网各有自己的入口#
远程 MCP 的 OAuth 发现、授权与 token 验证不是普通浏览器登录。Workers OAuth Provider v1 可作为授权服务与资源服务拆分的实现候选;连接成功后,仍要检验错误受众、过期令牌与跨资源请求。S71
WARP 是设备接入与流量策略;Mesh 面向加入组织的设备和私网;Tunnel 发布明确选择的服务。Mesh 当前仍有 beta 标识。与现有 VPN 共存时,先用非关键设备观察路由和 DNS,保留不依赖待改路径的恢复入口。S61 S62
05 / 保存内容,也保存它的来历#
一份文件,不只是一串字节#
假设要保存一份文档。原件可以放在 R2,目录与当前版本放在 D1:谁拥有它、对应哪个对象、大小和 hash 是什么、现在是否仍可读取。大对象与结构化状态分开之后,查目录不必每次加载原件。S37 S38
| 要保存的东西 | 常见位置 | 为什么要留下 |
|---|---|---|
| 原件、媒体、导出 | R2/已有文件存储 | 以后能重新读取与处理 |
| 目录、权限、版本指针 | D1/已有数据库 | 知道当前哪一版有效 |
| 检索索引 | Vectorize/托管检索 | 帮助找到候选,而不是代替原文 |
| 备份与恢复说明 | 独立可取回的位置 | 原服务失效时仍能使用 |
这是建议的分工,不要求替换已有数据库。完整 SQL 示例保留在实施参考中。
小资料架的第二份《更新与撤下笔记》可以做这项练习:先改写一句话、重建网页,再确认阅读与下载来自同一原件。扩展到在线系统后,下面的当前指针和读取资格才需要数据库持久化。
这是扩展设计,静态例子没有运行图中的数据库、任务或权限机制。
更新、撤回与删除不要混成一个按钮#
更新可以新增版本,再把当前指针切过去;撤回首先让内容不再对读者可见;物理删除才移除原件或派生数据。把三者分开,才能解释某个旧引用为什么存在,也更容易恢复误操作。
R2 bucket 默认保持私有,通过授权入口或有时效的访问方式取文件。对象 key 尽量使用不含真实姓名、邮箱等含义的标识;上传还要限制大小、类型和校验结果。生命周期规则先限定 prefix,避免一条清理规则影响所有历史对象。S52
备份应该回答“能恢复什么”#
D1 Time Travel 有计划相关的保留期,原地恢复会改变数据库。执行前保存当前状态和目标 bookmark,明确要恢复到哪一刻。需要更长保留时,另行安排导出;数据库有虚拟表或全文索引时,还要核对导出、导入的当前限制,不能假定所有内容都能一条命令来回。S50 S51
一个可用的演练是恢复到隔离目标,再检查代表性记录、原件 hash、版本与权限。数据库恢复成功但文件缺失,或文件齐全但权限回到旧状态,都不算恢复完了。
06 / 一次任务,可能执行不止一次#
先想清楚用户在等什么#
为小资料架新增第四份文档、生成预览或索引时,可以沿下面的任务记录处理;已有三份静态页面没有后台任务。
用户上传文档后,网页可以先显示“已接收”,后台再生成预览或索引。Queues 适合将接收与处理分开;Workflows 适合有多个步骤、等待与恢复的流程;Durable Objects 适合按实体协调;Cron 负责按时间触发。S53 S55 S56 S58
不是每个应用都需要四种。一次短请求就能完成的事,可以继续直接执行。
为什么只记一个“处理过”会丢任务#
考虑这样一段程序:先登记任务 ID,再做工作;重复收到同一 ID 就跳过。如果登记后进程退出,任务虽然“见过”,却永远没有做完。
反过来也有问题:外部动作先成功,登记之前连接断掉,重试可能再做一次。解决方法不是挪一行代码,而是留下任务现在处于什么状态。
| 当前状态 | 人能读懂的含义 | 下次收到同一任务时 |
|---|---|---|
| 等待处理 | 已经收下,还没开始 | 可以领取 |
| 执行中 | 某次执行正在处理 | 先检查它是否仍有效 |
| 已完成 | 结果已核实保存 | 返回已有结果 |
| 可以重试 | 确认失败,再试不会扩大损失 | 受预算限制地重试 |
| 等待核对 | 外部动作结果未知 | 不盲目再做 |
| 已取消 | 后续执行不应再开始 | 保留取消事实 |
这些是本手册建议的状态,不是平台统一规定。实现中还需要区分不同 attempt,离线模型用 generation / 执行代次标识每次领取:旧执行者即使迟到,也不能覆盖新一次的结果。租约过期只是恢复的一个条件,不证明旧程序已经停止。
想一想:租约到期后,新 worker 已领取,是否就能保证旧 worker 不会再产生外部动作?
展开答案与解释
答案:不能。 租约与代次控制本地领取和结果提交,不能让旧程序停止,也不能撤回它的外部请求。可重做的本地任务与不可逆外部动作需要分别设计恢复条件。
数据库与队列之间留一个投递记录#
写入数据库和发送队列是两件事。任务已写下、队列却没收到时,需要有地方看见这份待投递工作。常见做法是在同一次数据库提交里写任务和 outbox,再由投递器发送;重复发送由消费者的状态记录承接。
Outbox 可以理解为“准备寄出的任务清单”。它保住待投递意图,不保证所有系统恰好执行一次。清单本身也要能查积压、重试与终止。
Queues 可能重复投递;重试耗尽后,DLQ 可以保存需要调查的消息。Workflows 的步骤也可能重试,所以外部服务仍要有自己的幂等机制。S53 S54 S55
结果未知,应该有一个明确位置#
服务商支持 idempotency / 幂等 key 时,一次逻辑动作使用同一个 key,并按其契约查询或重试。不支持幂等、也无法查结果的外部动作,超时后先标为等待核对;离线模型将这一状态写作 uncertain / 结果未知。
离线示例 job-state 演示领取、迟到提交和未知结果的处理。可先用网页模拟观察合成情景,再按恢复任务单复现本地输出。模型仍有“外部请求发出后、写入 uncertain 前崩溃”的窗口,不能作为不可逆动作的完整自动重试器。上线之前,还需要注入真实失败:领取后退出、保存结果后丢 ACK、外部成功但客户端超时、取消与执行竞争。检查的是任务没消失、重复没扩大损失,而不只是成功路径能跑通。
Workflows 当前 Paid 包含每月 50 万步骤与 1 GB·月状态,步骤和存储自 2026-08-10 起计费;等待不计 CPU,不等于保留状态没有费用。Cron 使用 UTC,按业务日期工作的任务应明确时区与逻辑时间窗。S44 S56
这里的 CPU time是实际计算时间,Wall time是从开始到结束的总经过时间。记录等待与计算的区别,再按产品各自的计量单位核对预算。
07 / 先找回原件,再组织答案#
先问:搜哪一份世界#
小资料架只有三份自备原件,问“哪份说明撤下规则”,需要检索自己的集合;问“今天上游改了什么”,才需要互联网搜索。AI Search / Vectorize 与 Web Search API 进入的是这两种不同位置。2026-10-02 发布的 Web Search API beta 经 AI Gateway 调用,不因为名字里有 Search 就读取你的私有 bucket。S106
完整任务、来源回读与 provider 比较见自己的材料,还是互联网上的新信息。搜索结果先是候选;应用读回原页、核对日期,再把引用放进答案。费用、ZDR 与实际效果分开判断。
托管检索与自己的管线#
AI Search 可以接管一部分摄取、分块、索引和检索;Workers AI 加 Vectorize 则让应用自己安排这些环节。前者省维护,后者留下更多可修改的接口。两者都应先接受同一组真实问题的检验。S09 S10 S40 S41
准备一组小集合:精确术语、同义改写、模糊描述、旧名称、没有答案的问题,以及不该返回的内容。记录已知答案在哪里,不只挑五个漂亮结果展示。
10 月 GA 的 AI Search 已支持图片和 OCR。图片检索可用多模态路线,也可用文字描述路线;效果要用自己的材料比较。文件上限、字段数与模型条件仍需按本期来源核对。S09 S10
让每个结果带着回原处的路#
自建索引时,留下来源 ID、来源版本、chunk ID、内容 hash、embedding 模型和索引版本。升级模型建立新索引代,避免将不同语义空间里的向量混在一起比较。S64
读取身份决定允许查询的范围;候选返回后,再核对当前权限、撤回状态与版本,最后读取原文窗口。模型传来的 owner_id 不能替代服务器验证的身份。
AI Search 的 metadata filter 有字段数量和索引长度限制,复杂权限不能只靠一个任意长的字符串表示。细粒度内容需要明确分区与返回前的核验。S10
撤回不应该等待索引慢慢消失#
内容撤回后,应用读取资格应立即变化;向量和派生缓存的清理可以成为后续可重试任务。更新时先准备新原件与索引,验证后再切当前版本,避免一半新、一半旧拼成一份材料。
Vectorize mutation 已被接受,不代表所有查询马上可见。按状态和实际读回确认,比固定睡一秒钟更可靠。S64
记忆比搜索多了一层问题#
搜索问“哪里可能有相关材料”;记忆还要问“谁说的、何时有效、后来有没有更正、适用于谁”。这些条件不会由 embedding 自动补齐。
Cloudflare Agent Memory 当前仍是 private beta,与 AI Search 的 GA 分开看。取得接入前,不将它写成已可用依赖。S60
自己的记忆设计可以先保留自动抽取建议与原始来源,让人查看当前有效内容。测试旧偏好变更、同名人物、上下文冲突和明确禁止召回,比只测几条事实问答更能看见问题。
08 / 模型、路由与三种缓存#
先弄清谁在回答、谁在计费#
Workers AI 提供模型推理;AI Gateway 组织经过它的调用、凭据、观测与路由。通过 binding 或受控凭据,可以减少应用直接持有 provider key;Gateway 的访问资格本身仍是敏感能力。S41 S45 S15
资料架问“撤下规则在哪里”时,允许动作可以是读标题、读第二份原文、或停止并报告材料不足。完整输入见Clef / Jev 的首个有限决策任务;离线阅读例子没有调用模型。
先记录模型、时间、结果、token 和费用。确实需要正文调试时,再限定内容和保留期。首次创建 Gateway 在 2026-09-24 或之后的账户走新的 Workers Logs 规则;Unified Billing 充值另收 5%。S15
小判断可以比较三款模型,不必先换平台#
Clef、Clef-flash 与 Jev 都可以从 Cloudflare 接入,但前两款是 CF 托管模型,Jev 是第三方 TypeSafe 模型。先挑一个明确判断:例如下一步读标题、读原文,还是材料不足。模型只提建议,程序按照允许的操作集合执行。S17 S18 S73
用同一份材料和题目比较,记录实际响应版本、错误、延迟与计费输入。第一轮不要同时换模型、换平台、改题目,否则不知道变化从哪里来。下一轮固定 Jev,再比较原厂、CF 或已有 Gateway,才是在比较接入路线。S74 S76 S79
有限输出免去了文字解析,却不会自动消除误判。Jev 文档说明 confidence 从概率分布计算而来;两个模型都返回 0.9,不证明它们在你的材料上有相同正确率。阈值应用单独的验证集合校准,数值、日期和权限规则能直接计算的部分交给代码。S77 S78
| 路线(接入 → 模型) | 模型选择器 | 输入 USD / 百万 token | 来源 |
|---|---|---|---|
| Cloudflare → Jev | typesafe/jev |
0.042 | S73 |
| Cloudflare → Clef-flash | @cf/cloudflare/clef-flash |
0.09 | S18 |
| Cloudflare → Clef | @cf/cloudflare/clef |
0.24 | S17 |
完整比较与可离线检查的请求形状,分别在 comparisons/clef-vs-jev.md 和 examples/decision-routing/。这些材料没有冒充真实推理验收。
“缓存命中”究竟复用了什么#
| 类型 | 复用的东西 | 需要确认 |
|---|---|---|
| 完整回答缓存 | 上一次的整份输出 | 内容与权限变化后是否仍有效 |
| Provider prompt cache | 可复用的输入前缀计算 | 命中条件由模型与提供商决定 |
| 应用结果缓存 | 自己计算的结构化结果 | key 是否带了用户、版本与配置 |
三者不能从同一个 HIT/MISS 推断。尤其是有新消息、实时状态或权限变化的对话,旧答案即使便宜,也可能已经不适用。
允许换模型的任务,再试 AutoRouter#
AutoRouter 可在限定模型池中选择;beta 路由本身免费,推理照常计费。适合先放在可重试、错误可检测的小任务上,并记录实际命中模型。S13
User Insights 帮助查看流经 Gateway 的归属与成本,异常标记不自动阻止调用。它不能代替本地、订阅、直接 API 等其他使用记录。S14
有限选择可以单独试 Clef#
Clef 系列适合分类、筛选和下一步建议,不一定要为一个小判断生成长解释。先准备正例、反例与无法判断项,让模型只提出建议,再看误判代价是否可接受。概率仍需在自己的材料上校准。S16 S17 S18
09 / 让 agent 的工作持续,给工具安排环境#
不同运行层,负责不同的事情#
普通 API、字段变换与轻量计算可以留在 Worker。需要系统包、原生程序或完整 Linux 时再用 Containers。Agents SDK 提供身份、状态、连接与执行能力;它不是另一台 Linux 机器。S58 S59
一次任务最好带着明确输入进入:哪个版本、允许做什么、预算多少、成果保存在哪里、怎样取消。临时执行者得到这次任务的能力,不必持有长期管理账户的钥匙。
harness 保存工作,环境执行工具#
如果资料更新任务读到一半进程重启,要保留的是对话、未完成工作与下一步;如果工具要跑系统命令,需要的是执行环境。这两份状态不能靠一张磁盘快照代替。PiHarness 把 Pi 的 loop、transcript 和 inbox 接入 DO SQLite,由 Agents Lifecycle 在有未完成工作时唤醒;Containers / Sandbox 仍承担需要 Linux 的工具环境。S105
PiHarness 为 beta,Pi Durable 为 experimental。官方工具示例的 replay: "safe" 用在无副作用的字数统计,不能推导邮件、付款或发布都可随意重放。把它和第 6 章的未知结果一起读,再看agent 运行分工,选择是否研究这条实现,而不是因新 SDK 自动迁移。S104
同一个工作区,先核对 SDK 版本#
Artifacts 保存可审查的文件历史,Sandbox 提供 Linux 工具环境。当前 Artifacts 的组合示例固定模板 #v0,使用旧 Sandbox SDK 的 getSandbox() 与 setEnvVars();Sandbox 1.0 则要求应用自己的 Durable Object 与 this.ctx.container。这些是两代 Sandbox 运行接口,不能混写。核验于 2026-10-05。S114 S115
可以按任务建立仓库,向获准运行会话提供短期、限仓库的写入 token。Builds 与 Preview 要明确配置,推送文件不等于成果被接受。版本历史、文件系统快照与 agent 任务状态分别保存不同事实,需要定义衔接。S07 S114
1.0 要重新看生命周期#
Sandbox 1.0 由应用自己的 Durable Object 控制 ctx.container。命令使用参数数组,每次指定工作目录和环境;新镜像未必含有旧镜像的全部工具,旧进程也不会因为 Worker 更新就自动替换。S72
网络能力同样需要按新版文档设置。将长期凭据留在控制层,只在获准请求上使用,比把它们写进镜像更易限制。配置后仍要测试实际允许与拒绝的访问。S72
做一次完整的小实验#
选一个没有私人凭据的公开仓库版本,装好固定依赖,先跑确定性的检查。然后保存文件快照,从这份基线分出两个环境,各做一个小修改,交回补丁与结果。
快照只保存文件,不保存运行中程序,绑定镜像版本,当前 30 天保留期会在恢复时刷新。建立基线前清理不应被复制的材料与凭据。S05
需要历史的文件可用 Artifacts 保存,大型媒体可用对象存储。完成后关闭,再恢复一次:文件能否回来,旧任务有没有被误重跑,成果是否仍可读?这些才是“可恢复”的具体含义。S07
停下来也是任务的一部分#
Containers 的 CPU 按实际活跃使用计,内存和磁盘按配置及运行时长计。执行两分钟、多等十分钟,不能仍按两分钟预算。停止容器也不会撤销已经发出的外部请求。S06
10 月的 DO pending-I/O 更新可保护部分等待操作,期间仍计时长费用;它不代替持久任务恢复。S70
想一想:任务计算两分钟、等待网络十分钟,能否将所有资源都按两分钟估算?
展开答案与解释
答案:不能。 总经过时间是十二分钟,CPU 计算时间与等待时间需要分开记录;内存、磁盘、状态保留及其他调用按各自规则计量。记录这两个时间,不等于已经测得真实账单。
Cloudflare OS 则适合观察更完整的文件、工具与工作空间。当前自部署源码和托管候补是两种状态,研究 Gatekeeper、导出与升级即可,不必立即承载关键工作。S20
10 / 发布以后,真的用一遍#
检查哪一版,就发布哪一版#
生产发布保留一条明确负责的路径:可以是 GitHub Actions,也可以是 Workers Builds;另一边提供检查或预览。这样不容易出现两个系统同时发布,或检查的是 A、上线的却是 B。
Workers Builds 当前 Paid 包含每月 6,000 分钟、6 并发,单次限 20 分钟;设备专属和不同操作系统的测试,仍放在对应环境。S35 S65
预览也会使用真实资源#
DO 与 Containers 当前支持部分预览自动隔离,其他资源要逐项看绑定。D1、R2、KV、队列、Vectorize 指向同一目标时,换一个 URL 并不会得到另一份数据。S63
外部 PR 用合成数据和独立测试身份,避免直接取得生产 token。测试结束也要清理预览文件、队列与临时资源。
从进入到离开,而不只看首页#
Browser Run 可用于固定视口下的页面读取和操作。一个有用的检查过程是:进入、执行主要动作、保存、刷新、重开、取消,再故意触发一次错误。桌面与窄屏、键盘与触控都要考虑。S36
截图证明某一刻画面是什么样;导出后重新打开,才知道保存是否成立。两种证据都重要,不能互相替代。
Kitesurf 可以用于独立浏览实验,但不能代替最终目标浏览器。登录任务可以使用获准会话,没必要把整份个人浏览器资料交给临时环境;发布、支付等动作仍须有具体授权。S19
11 / 沿着一条请求,找到问题发生的地方#
从一次慢请求开始#
小资料架昨天很快,今天“搜索资料”用了十二秒。先记录请求 ID、部署版本、路径和时间范围,再把成功与失败的请求放在一起比较:慢在入口、Worker、索引读回、权限核验还是生成?总耗时不能回答这些问题。
Cloudflare Traces 的 open beta 可展示支持范围内的规则、转换、缓存、路由、Worker 与源站处理。应用内部的检索和生成仍需自己的阶段记录,不将平台 span 当作每个内部步骤都已自动覆盖。S99
平时少采,调查时定向采#
设置较低的 baseline,再用 Trace Rules 对需要调查的路径或临时 header 提高采样。规则按第一条匹配生效;保存草稿和 Deploy 是两个动作。入站 trace context 默认拒绝,放开后也不证明请求身份可信。S101
查询、调查、通知接成一条路#
SQL API beta 给多种 dataset 一个共同查询入口;当前每个 statement 只读一个 dataset,并需要下界时间条件。可以切 dataset 用请求身份对照,不声称跨 dataset JOIN 已开放。官方 SQL / Observability MCP 供有权限的人与 agent 调查,修改生产配置仍另有授权。S102 S103
Workers Issues 继续承接错误与版本;Alerts 给持续故障或积压一个可行动的入口。日志保留请求 ID、阶段耗时、结果和重试次数,正文与个人信息按实际需要限制。一次调查该怎样走,以及采样、保留与费用的完整解释见观测与调查。S11 S12 S98
12 / 算清持续成本#
先按单位,再按美元#
Workers Paid 最低每账户每月 $5,多项目共享包含量;R2、浏览器、模型、容器和日志各自计量,Zero Trust 也是另一种计划。启用 Paid 不等于取得所有企业功能。S34 S38 S41 S67
| 使用形态 | 首先计量 | 容易漏掉 |
|---|---|---|
| 网站与少量 API | 动态请求、CPU、构建 | 日志和重复构建 |
| 资料库与检索 | 摄取、存储、查询、模型 | 重复分块、生成、旧索引 |
| 临时工作台 | 总运行时间、规格、模型 | 空闲、失败重试、产物保留 |
D1 计行,不只看 SQL 次数;R2 计对象操作;向量需要乘维度;队列还会因重试增加操作量;容器的空闲内存仍在运行时间里。这些单位比“每月应该只花几美元”更有用。S06 S37 S38 S39 S40
R2 价格:流量免费,存储和操作仍要算#
R2 Standard 的标价为 $0.015 / GB-month、Class A $4.50 / 百万次、Class B $0.36 / 百万次;每月包含 10 GB-month、100 万 A、1,000 万 B。Infrequent Access 有不同单价、取回费用与 30 天最低保存期,不享受这份 Standard 免费量。直接从 R2 出站不收费,接上其他计量服务后仍可能产生它们的费用;最终账单还有单位向上取整。S112
Observability:当前与已公布的费用分开读#
固定资料日期:2026-10-03。
| 条款 | Free | Paid |
|---|---|---|
| 当前 Workers Logs S111 | 200,000 events / 日;3 天 | 20,000,000 events / 月;超出 $0.60 / 百万;7 天 |
| 已公布;将在 2026-12-01 生效 S100 | 0.5 GB 摄取 / 日;7 天 | 50 GB 摄取 + 12 GB-month / billing cycle;超出 $0.25 / GB + $0.10 / GB-month |
上表共用 费用记录与生效事件。当前 pricing docs 的 Paid 存储包含量为 12 GB-month,发布博客仍写 10;采用文档口径并保留差异。未采样安全 dataset 不消费共享包含量;Enterprise 在合同续约时迁移。按字节计费后,大 attributes 和完整正文也增加摄取量,不只数 span。S100
给每次实验记一笔小账#
记录输入规模、次数、实际运行时间、资源与保留产物。先合并账户下的总用量,扣除一次共享包含量,再按项目分配观察。小规模便宜,不保证索引全量重建或重试风暴也便宜。
设定可以执行的停止条件:任务截止时间、最大并发、模型调用数、数据保留期。账单通知提醒趋势,不是全账户硬封顶。
免费也有三种含义#
免费计划可能在达到上限后停止;Paid 包含量之外可能继续计费;beta 免费可能有未来起算日。Artifacts 的来源存在 10 月 14/15 日一天冲突,AI Search 新计费自 11 月 1 日开始,要把核验日与生效日同时留下。S07 S08 S10
普通 KV 与 KV Instant 也不能混看。后者面向特殊读重型负载,写入、删除、列举每次 $0.10,存储每 MB·月 $100,不适合作为普通个人状态库的默认选项。S42 S25
13 / 坏了、恢复、暂时不用#
沿着请求走,不同时改所有东西#
| 看到的现象 | 先看这里 |
|---|---|
| 域名在不同设备解析不同 | DNS、代理、解析器与权威记录 |
| 302 到登录页 | Access 的应用与路径 |
| 403/401 | 响应来自边缘还是应用,再查对应身份 |
| 404 | hostname、路由、ingress 与对象是否存在 |
| 429 | 配额、限流与重试方式 |
| 5xx/超时 | 请求 ID、各阶段耗时、依赖健康 |
| 页面仍是旧版 | 实际部署、路由与浏览器缓存 |
| 任务有记录却没结果 | outbox、领取状态、租约与未知结果 |
| 容器文件消失 | 生命周期、镜像、快照与持久成果 |
状态码是线索,不是诊断。一次只验证一个原因,恢复后重新测拒绝路径,避免“能打开了”掩盖权限被顺手放宽。
让恢复目标具体一点#
例如“把测试资料集合恢复到指定版本,不重新执行历史外部任务”。保留当前状态与备份身份,再验证记录、文件 hash、权限和待处理工作。恢复中遇到未知结果,就留下等待核对状态,不把它改成成功或未发生。
停用有一个顺序#
先关闭新入口和自动触发,再处理执行中的任务;保存成果、撤销凭据,检查容器、浏览器会话、预览、队列和临时对象。最后按需要删除资源,或保留只读内容。
同时检查域名是否仍指向废弃服务,备份能否在不依赖原服务时读取,外部模型和日志是否还有保留设置。一项应用停止访问,不一定意味着所有关联费用都停止。
14 / 继续维护这份手册#
保留问题,更新做法#
实施时要分清几处容易混淆的边界:队列登记不等于任务完成;调用者标签不证明身份;快照不保存进程;Preview 不证明数据隔离。
截至本期资料日期,Sandbox 1.0 路线、AI Search GA 与新计费、Gateway 按首次创建日区分的日志规则、Cloudflare OS 托管候补分别有各自的开放条件;实施前应按来源和目标账户再核对。S72 S09 S10 S15 S20
两种读者,不必挤在同一页#
报告与本手册先让人理解用途、过程和取舍。实施参考保存精确字段、源码、命令、状态转移与失败检查;它可以更直接地给 agent 使用,却不能把文档当作部署授权。两层共用来源登记和例子,不各自维护一份互相漂移的事实。
| 需要什么 | 仓库入口 |
|---|---|
| 本期产品变化 | 2026.10 首发选编;10-03与10-02历史观察 |
| 人的阅读版 | guides/handbook.md |
| 实施细节、完整代码和状态约束 | reference/implementation.md |
| 离线示例与测试 | examples/、tests/ |
| 来源、日期与变化记录 | catalog/、来源说明 |
这里的检查分为资料与示例的本地验证、实际云端验证两类。本包包含前者,不包含账户登录、部署、迁移或模型实测。新的实践结果应按自己的输入、版本和范围补充,不无声地改写旧期判断。
来源索引#
原有条目沿用 2026-10-02 的核验范围;新增四主题与 R2 费用来源查阅于 2026-10-03;S114–S117 的接口与认证说明定向核验于 2026-10-05。完整范围与来源差异见来源说明。资料查阅不等于账户、模型或云端实测。
- S02 · cf CLI 发布
- S03 · cf CLI 文档
- S05 · Containers 文件系统快照
- S06 · Containers 价格
- S07 · Artifacts 公开测试发布
- S08 · Artifacts 价格
- S09 · AI Search GA
- S10 · AI Search 限制与价格
- S100 · Cloudflare Observability 价格
- S101 · Cloudflare Traces 采样与传播配置
- S102 · SQL API 查询
- S103 · SQL API 限制
- S104 · PiHarness 发布
- S105 · PiHarness 状态与 Lifecycle
- S106 · Web Search API 发布
- S109 · Protected Quick Tunnels 发布
- S11 · Workers Issues 发布
- S111 · Workers Logs 迁移前计费
- S112 · R2 存储类别与价格
- S113 · Workers 新项目脚手架
- S12 · Workers Issues 文档
- S13 · AutoRouter 发布
- S14 · AI Gateway User Insights
- S15 · AI Gateway 价格与日志
- S16 · Clef 与强化学习平台发布
- S17 · Clef 模型卡
- S18 · Clef-flash 模型卡
- S19 · Kitesurf 更新
- S20 · Cloudflare OS 托管候补
- S25 · KV Instant 私测与价格
- S34 · Workers 价格
- S35 · Workers Builds 限制与价格
- S36 · Browser Run 价格
- S37 · D1 价格
- S38 · R2 价格
- S39 · Queues 价格
- S40 · Vectorize 价格
- S41 · Workers AI 价格
- S42 · KV 价格
- S44 · Workflows 价格
- S45 · Workers Bindings
- S46 · Workers Static Assets
- S47 · Cloudflare Tunnel
- S48 · Access JWT 验证
- S49 · Access Service Tokens
- S116 · Access 严格 Service Token 认证
- S114 · Artifacts:Sandbox SDK 示例
- S115 · Sandbox SDK 1.0:替换 Sandbox 类
- S117 · Tunnel routes 与 connections API 变更
- S50 · D1 Time Travel
- S51 · D1 数据导出
- S52 · R2 对象生命周期
- S53 · Queues 重试与批处理
- S54 · Queues 死信队列
- S55 · Workflows 执行规则
- S56 · Cron Triggers
- S57 · Service Bindings
- S58 · Agents SDK
- S59 · Sandbox SDK
- S60 · Agent Memory
- S61 · Cloudflare Mesh
- S62 · Split Tunnels
- S63 · Workers 预览资源隔离
- S64 · Vectorize Client API
- S65 · Workers Builds
- S66 · Workers 入门
- S67 · Zero Trust 计划
- S70 · Durable Objects pending I/O 保活
- S71 · Workers OAuth Provider v1
- S72 · Sandbox SDK 1.0 迁移差异
- S73 · Jev:Cloudflare 第三方模型目录
- S74 · TypeSafe:Jev 版本、价格与上下文预算
- S76 · OpenRouter:Jev 的两种接口
- S77 · TypeSafe:confidence 的含义
- S78 · TypeSafe:Jev 1.13 已知能力边界
- S79 · Cloudflare AI Gateway:统一 REST API
- S98 · Cloudflare Observability 新平台发布
- S99 · Cloudflare Traces 发布
关于这一版#
这是面向个人使用的独立参考资料,不是 Cloudflare 官方出版物。产品事实保留来源,场景与判断属于编辑分析。