上线翻车的根因来来回回就那几样:dev 与 prod 的 env 不一致、DNS 没传播完、CDN 还在发旧资源、回滚没人演练过。下面这 12 个 Prompt 上线前把常见雷区先扫一遍,再给上线后头 24 小时的结构化观测——避免一个回归被忽略整整一天。把它们贴进任意一个知识截止较新的模型(截至 2026 年 6 月,Claude Sonnet 4.6、GPT-5.5、Gemini 3.1 Pro 处理这类任务都不错),填好 [方括号] 里的占位,就能拿到贴合你这套栈的输出,而不是泛泛之谈。构建侧可配合 Claude Code 执行 Prompt。
TL;DR
- 第 1–4 条(清单、env diff、DNS、缓存)在上线前跑;第 5–7 条(冒烟、可观测性、回滚)在切换中跑;第 8–12 条(24 小时观测、安全头、hreflang、沟通、复盘)在上线后跑。
- 两份最便宜的上线保险:一次 env 变量 diff(拦住一半”本地能跑”的故障),以及一套你真的演练过一遍的回滚流程。
- 任何域名切换前,提前整整 24–48 小时把 DNS TTL 降到 300 秒,再用
dig和 whatsmydns.net 验证,确认无误后才动记录。 - 上线后到 securityheaders.com 免费给安全头打分,目标 A 或更高。
这套 Prompt 适合用在哪
- 新项目首次生产上线
- 带破坏性改动的大版本发布
- 自定义域名在 DNS 商之间迁移
- 托管平台切换(比如 Firebase Hosting 换到 Vercel)
- 站点级基础设施变更(CDN、图床、DNS)
- 改动到计费、鉴权或任何承重模块的发布
1. 上线前清单
我的栈:[框架 + 托管,例如 Astro on Vercel Pro]。
请按此栈生成上线前清单:
- build(命令、env、输出目录)
- env 变量(必需、可选、Secret 存储指向)
- DNS、SSL(证书、跳转、www vs apex)
- sitemap、robots.txt、canonical
- analytics、错误追踪、真实用户监控
- AdSense / 变现状态(如适用)
- 合规页、隐私政策、cookie 横幅
最多 25 项。每项标记"阻塞 / 非阻塞"。
2. env 变量 diff
下面是 dev + prod 的 env 列表。请识别:
- prod 缺、代码却需要
- 值不匹配且可能弄崩(URL 指错环境、feature flag 反了)
- prod 有、代码已不用
- 在非 secret 文件里泄漏的密钥
[粘贴两份列表]
输出 4 个列表,每条带严重度(阻塞 / 警告 / 清理)。
这一条就能拦住最常见的上线故障:某个值在本地 .env 里存在,却从没加进托管平台的 Secret 存储。
3. DNS 迁移计划
把域名 [domain] 从 [A] 迁到 [B]。
计划:
- 提前降 TTL 的步骤与时间(降到 300 秒,切换前 24-48h 开始)
- 待重建的全部记录(A / AAAA / CNAME / MX / TXT / CAA)
- 切换时刻的操作顺序
- 回滚路径(以及允许回滚的 TTL 窗口)
- 验证命令(dig、nslookup、whatsmydns.net)
- 确认稳定 48h 后把 TTL 调回的步骤
具体时机:TTL 设为 300 秒时,全球大多数解析器会在 30–60 分钟内返回新记录;那些 24–48 小时的恐怖故事,都来自把 TTL 留在 3600 秒以上、又从没提前降下来的站点。动记录之前,先确认低 TTL 真的传播开了:
dig +noall +answer [domain]
切换前,TTL 那一列应当显示 300 或更低。
4. 缓存失效计划
上线影响缓存的改动。
请列:
- 需要失效的层(CDN / 边缘 / 框架页面缓存 / 浏览器通过 Cache-Control 头)
- 各层预计传播时间
- 哪些资源可继续缓存不动
- 各层验证命令
- 失效慢时的兜底(按 tag purge、给资源 URL 加版本号)
5. 冒烟测试脚本
为 [站点] 生成上线后 10 步冒烟脚本:
1. 首页加载(200,控制台无报错)
2. 关键文章 / 详情页
3. sitemap.xml 合规且列出预期 URL
4. robots.txt 允许生产环境抓取
5. 404 页可用
6. 登录流程(若有)
7. API 健康检查
8. RSS feed(若有)
9. hreflang 正确互链
10. 移动布局首屏不破
每步:命令或 URL + 预期结果 + 失败如何记录。
6. 可观测性检查
为 [栈],请列上线前最低限度的可观测性:
- 错误追踪(前端 + 后端)
- 结构化日志
- 外部 uptime 监控
- 真实用户指标(Web Vitals、转化)
- 告警路由(落在哪、On-call 轮值)
按类别建议免费档工具,每个给 5 分钟内可配完的步骤。
上线规模下扛得住的免费档选择(截至 2026 年 6 月):错误追踪用 Sentry(免费档每月 5,000 条错误、团队人数不限)或 Better Stack(免费档约每月 10 万条异常、免信用卡、附带 uptime + 状态页);外部 uptime 用 Better Stack 或 UptimeRobot;真实用户指标可直接用 Vercel / Cloudflare 自带的 Web Vitals。超出免费档前先看一眼 Sentry 定价。
7. 回滚演练
为我的栈 [框架 + 托管],设计回滚步骤:
- 代码回滚(git revert vs 提升上一次部署)
- DB 迁移回滚(only-forward?反向迁移?还是用 feature flag?)
- DNS 回滚(TTL 限制)
- 回滚后的缓存失效
文档具体命令。每步注明"谁有权限"。
在 Vercel 上,代码回滚是快路:Instant Rollback 在路由层把生产流量指回某个旧部署,无需重新构建,几秒内生效(CLI 用 vercel rollback,或在面板的 Production Deployment 卡片操作)。两个值得在故障来临前先知道的坑:Hobby 档只能回退到紧邻的上一次部署(Pro / Enterprise 可选任意历史生产部署),而且回滚用的是旧的 env 变量和 cron 配置,不是你之后在设置里改过的那套。参见 Vercel Instant Rollback 文档。
8. 上线后 24 小时监控计划
上线后 24 小时该盯什么、什么时候盯。
每个指标给出:
- 触发关注的阈值
- 命中阈值后的第 1 步动作
- 若第 1 步无效的升级路径
指标:错误率、p95 延迟、Search Console 错误、托管告警、
AdSense / 变现状态、转化相对基线。
9. 安全头审计
为 [site URL] 起一套安全头:
- Content-Security-Policy(默认严格 + analytics / AdSense / 字体的必要放行)
- Strict-Transport-Security
- X-Frame-Options / frame-ancestors
- Referrer-Policy
- Permissions-Policy
输出:[托管平台] 上的具体配置 + 验证命令(curl -I)。
合理的起步值:Strict-Transport-Security: max-age=63072000; includeSubDomains; preload(两年),以及一条严格的 CSP,例如 default-src 'self'; frame-ancestors 'none'; base-uri 'self',之后只为 analytics 和 AdSense 真正需要的域名逐步放宽。上线后把线上 URL 贴到 securityheaders.com 扫一遍,目标 A。各个头具体管什么,以 OWASP Secure Headers 项目 为权威参考。
10. Hreflang / i18n 验证
我的站有 [N] 个语言:[清单]。每种页型([首页、文章、分类])请验证:
- hreflang 互链所有语言变体
- x-default 指向正确
- canonical 不跨语言
- sitemap 含各语言条目
- 每个语言挑 1 个示例 URL 抽查
输出验证清单 + 待手动测试的具体 URL。
11. 状态页 + 故障沟通模板
为 [站点] 起 4 份状态页 / 故障沟通模板:
1. 调查中——故障前 10 分钟
2. 已定位——根因清楚、修复中
3. 监控中——修复已发布、观察稳定
4. 已解决——完整时间线、根因、后续动作
每个状态条 200 字符以内 + 一封更长的邮件版。语气:冷静、事实、不指责。
12. 故障复盘 Prompt
我们发生了一次故障:[一句话描述、持续时长、用户影响]。
请走结构化复盘:
1. 事件时间线(发现 -> 缓解 -> 解决)
2. 直接原因 vs 根因 vs 诱因
3. 响应中做对的事
4. 应改进的(流程、代码、可观测性)
5. 行动项,配负责人与截止日期
输出一份可填写的模板,方便我贴进复盘文档。
每条 Prompt 在哪个阶段用
| 阶段 | Prompt | 目标 |
|---|---|---|
| 上线前 | 1 清单、2 env diff、3 DNS、4 缓存 | 趁配置缺口还便宜时拦下来 |
| 切换中 | 5 冒烟、6 可观测性、7 回滚 | 线上验证,留好逃生口 |
| 头 24 小时 | 8 监控、9 安全头、10 hreflang | 盯住无声的回归 |
| 翻车时 | 11 沟通、12 复盘 | 先对外沟通,再总结 |
容易踩的坑
- 上线前没做 env 变量 diff。 一半的”本地能跑”问题死在这,第 2 条几秒就能揪出来。
- 跳过缓存失效计划。 用户看到旧版本好几个小时,为你早就发布过的版本提工单。
- 上线前没回滚演练。 回滚第一次被调试就在故障当下——而这正是你最不想发现”Hobby 档只留一个旧部署”的时刻。
- 上线后只盯错误率。 转化回归会在错误日志风平浪静时悄悄持续;转化相对基线也要盯。
- i18n 站点忘了 hreflang 验证。 Google 索引一个语言,其余全丢。
常见问题
这些该贴进哪个模型? 任何较新的模型都能很好地推理上线问题。截至 2026 年 6 月,Claude Sonnet 4.6 和 GPT-5.5 是稳妥默认;如果想让输出对照你真实的仓库来检查,就在 Claude Code 或 Cursor 里跑,让模型读你的配置文件,而不是靠猜。
DNS 切换前多久该降 TTL?
至少 24–48 小时。把记录的 TTL 降到 300 秒,用 dig +noall +answer [domain] 确认低值已传播,再做真正的记录替换。确认稳定 48 小时后,把 TTL 调回 3600 秒以上以降低查询压力。
用了 Vercel 的 Instant Rollback,还需要回滚演练吗? 需要。Instant Rollback 几秒就能把你的代码回滚,但它不会撤销数据库迁移,而且 Hobby 档只能退回紧邻的上一次部署。演练真正要练的,恰恰是 Instant Rollback 碰不到的部分:迁移、DNS 和缓存。
上线后最快怎么验证安全头?
先 curl -I https://yoursite.com 快速扫一眼,再把 URL 贴进 securityheaders.com 看分级报告。目标 A;最常见的失分点是缺失或过于宽松的 Content-Security-Policy。
12 条能在一段对话里全跑完吗? 能,但按阶段分组(前 / 中 / 后)、每次贴上相关上下文跑,输出会更锐利。把 12 条全塞进一个 Prompt,会稀释模型的注意力,清单往往做得更浅。