我在将 Cloudflare Workers 部署到生产环境时犯的5个关键错误(以及如何避免)
Source: Dev.to
(请提供您想要翻译的正文内容,我将为您完整地翻译成简体中文,并保留原始的 Markdown 格式、代码块和链接。)
概览
我已经在生产环境中部署了超过 50 个 Cloudflare Workers。说实话?我犯了书中所有的错误。
- 有些只是小小的烦恼。
- 还有些代价高昂。一次错误导致公司整整一个上午的宕机。另一次则暴露了一个安全漏洞,直到用户报告我才发现。
每一次错误都给我上了一课。经过多年(艰难的)学习,我终于拥有了一套可行的系统。
今天,我想分享我所犯的错误——以及你如何避免它们。
错误 #1:在没有安全检查清单的情况下部署
我做了什么
构建了一个 Worker,在本地测试后直接部署。看起来一切正常。
我遗漏了什么
- 没有 CORS 配置(浏览器阻止请求)
- 没有速率限制(被大量请求淹没)
- 没有安全响应头(暴露于 XSS 攻击)
- 密钥硬编码在环境中(我虽然使用了 Cloudflare Secrets,但没有对输入进行验证)
后果
我的 API 被大量请求冲击。没有速率限制导致崩溃。随后有用户报告可以注入恶意数据。
如何避免
在部署 之前 创建安全检查清单:
- ✅ 为仅限你的域名配置 CORS(而不是通配符)
- ✅ 启用速率限制
- ✅ 对所有端点进行输入验证
- ✅ 设置安全响应头(HSTS、CSP 等)
- ✅ 将密钥存储在 Cloudflare(而不是代码中)
- ✅ JWT 令牌设置过期时间
- ✅ 错误信息不泄露系统细节
我现在对每一次部署都使用清单。只需 10 分钟,却能避免无数头疼。
这正是我创建 7‑检查清单系统(以及可直接用于生产的代码模板)来安全部署 Workers 的原因。安全只是其中之一。
获取完整指南,售价 $29 →
错误 #2:未在生产前测试性能
我的做法
在本地构建,在预发布环境测试,直接部署到生产。
我遗漏的地方
- 缓慢的数据库查询
- 缺失的缓存配置
- 某些接口响应时间超过 2 秒
结果
用户抱怨卡顿。我的 Cloudflare Workers 费用比预期高(不必要的数据库调用)。我不得不回滚并进行优化。
如何避免
- 在负载下测试响应时间(不仅仅是本地)
- 检查 P95 延迟(而非仅看平均值)
- 对数据库查询进行分析
- 为重复请求实现缓存
- 确认打包体积不超过 1 MB
在开发期间使用一个简单的 console.time() 就能立刻发现问题:
console.time('db-query');
const users = await env.DB.prepare('SELECT * FROM users').all();
console.timeEnd('db-query'); // Output: db-query: 145ms
我吃了苦头才学到这点,所以在我的部署指南里加入了完整的性能检查清单和缓存模板。
点此查看 → $29
错误 #3:忘记设置适当的日志记录
我的做法
部署后,认为它会正常工作,却没有设置任何监控。
我遗漏的
当出现故障时,我根本不知道发生了什么。没有日志。没有错误追踪。只有……什么都没有。
后果
盲目调试花了 2 小时。如果有适当的日志,本可以在 5 分钟 内找到问题。
如何避免
- ✅ 在
wrangler.toml中启用 Workers 日志 - ✅ 结构化日志(JSON 格式)
- ✅ 包含
RequestID以便追踪 - ✅ 记录不同级别(DEBUG、INFO、WARN、ERROR)
- ✅ 为高错误率设置警报
示例:
const logger = new Logger({
requestId: crypto.randomUUID(),
path: url.pathname,
method: request.method,
});
logger.info('Request received', { endpoint: '/api/users' });
// Output:
// {"timestamp":"2025-12-25T...","level":"INFO","message":"Request received","requestId":"...","path":"/api/users","method":"GET"}
我已经构建了一个结构化日志模板,并将其包含在我的指南中,指南中还包括监控、健康检查以及你需要的所有内容。
获取 $29 访问 →
错误 #4:没有回滚计划
我的做法
部署了一个有缺陷的版本,生产环境出问题后惊慌失措。
我遗漏的
我根本不知道如何快速回滚到之前的版本。因为手忙脚乱,我的修复花了 30 分钟。
后果
用户遭遇了 30 分钟的宕机,失去了信任。如果有熟练的回滚流程,可能只需要 2 分钟。
如何避免
-
熟记回滚命令:
wrangler rollback DEPLOYMENT_ID -
首先在预发布环境中测试。
-
将其记录在团队的运行手册中。
-
进行练习(认真地做一次回滚测试)。
5 分钟的练习可以为以后节省 30 分钟的慌乱。
错误 #5:未记录你的操作
我的做法
部署了关键更新,但没有记录更改,也没有告知团队。
我遗漏的
我的同事在一小时后部署时并不知道我的更改,导致冲突。
后果
配置混乱,部署失败,回滚了我的更改,第二天不得不重新部署。
如何避免
为团队创建部署检查清单:
- 更改了什么?
- 为何会更改?
- 需要注意什么?
- 如何回滚?
- 谁进行了部署?
- 何时部署?
5 分钟的部署日志可以在以后节省数小时的困惑。
有效的系统
部署前
- 预部署检查清单(配置、密钥、数据库)
- 安全检查清单(认证、CORS、头部、验证)
- 性能检查清单(缓存、查询、打包大小)
- 测试检查清单(单元、集成、预发布)
部署期间
- 部署日检查清单(健康检查、指标、警报)
- 持续监控(日志、警报、健康端点)
如果您想要一套现成的检查清单、模板以及一步步的指南,以安全部署 Cloudflare Workers,请获取完整套餐,售价 $29。
24 小时的 Sly
- 监控错误率和响应时间
部署后
- 使用部署后检查清单(日志、指标、团队通知)
- 记录变更内容
- 庆祝(你值得)
该系统已消除我 95 % 的生产问题。现在一旦出现故障,能够立即捕获并在几分钟内修复,而不是数小时。
乏味却必要的真相
部署并不光鲜。清单也不刺激。但它们有效。
我合作过的最佳团队并不是最聪明的——而是最有纪律性的。
- 他们有清单。
- 他们遵循清单。
- 他们很少出现事故。
当真的出了问题时?他们有预案,几分钟内解决,然后继续前进。
这就是我花时间把所有内容汇编成一本指南的原因。 不是想推销,而是因为我真心相信每位开发者都应该拥有它。内容包括:
- ✅ 25页的生产部署指南
- ✅ 7份可打印清单(可直接打印并贴在办公桌上)
- ✅ 9个可直接用于生产的代码模板
在此获取 → — $29
从哪里开始
如果你正在阅读此文并想,“是的,我应该有一个系统…”,我推荐以下步骤:
- 打印安全检查清单 并贴在你的显示器上。
- 为你的团队创建一个简易部署检查清单(或从我的指南中获取一个)。
- 在 Cloudflare 中设置一个高错误率警报。
- 进行一次回滚测试。
大约需要 1 小时,可能帮你避免 6 个月的安全噩梦。
或者,如果你想一次性准备好所有内容,获取完整指南,仅需 $29 →。
最终思考
我是在一次次代价高昂的错误中学到这些教训的。你不必如此。
最聪明的做法不是第一次就写出完美的代码,而是建立一个在错误进入生产环境之前就能捕获它们的系统。
- Checklists
- Monitoring
- Logging
- Rollback procedures
无聊吗?也许吧。但你的运维团队会感激你,用户也不会遭遇宕机,CEO 也不会对你大喊大叫。
你是否也犯过这些错误?学到了什么? 在评论区告诉我——我很想听听你的部署“战争”故事。
如果你想要一个完整的系统来避免这些问题,我已经把所有内容打包好,只需 $29 →
指南内容概览
既然我一直在提到它,这里是你实际能得到的内容,售价 $29:
指南
- 25 页的生产部署知识
- 包括从部署前配置到部署后监控的全部内容
- 实际错误案例及解决方案
代码(9 个可直接用于生产的 TypeScript 模板)
- JWT 认证
- CORS 处理器
- 限流
- 缓存策略
- 安全响应头
- 结构化日志
- 输入校验
- 健康检查
- 完整的 Worker 设置
检查清单(7 张可打印的清单,每个阶段一张)
- 部署前
- 安全
- 性能
- 测试
- 监控
- 部署日
- 部署后
附加内容
- 配置示例
- 完整故障排查指南
- 包含 20 多个已解答问题的 FAQ
所有内容均可直接使用、定制和扩展。
如果不满意,提供 30 天退款保证。