页面能打开,但仍显示旧版本时,先把解析地址、响应缓存和应用版本分开记录。三者处于不同环节,一次状态码 200 只能说明这次 HTTP 请求得到了成功响应。
下面是模拟的静态站点发布:www.example.com 从旧服务指向新服务,预期正文版本由 release-a 变为 release-b。域名和文档地址不是本站探测结果。本例只改同一主机名的解析目标;如果同时更换域名,请按域名迁移指南补查旧新 URL 映射、证书、canonical 和登录回调。
切换前先写停止条件
在服务选型与迁移准备中记录运行约束、旧服务保留方式、数据恢复和负责人。本例的停止条件是“关键页面出现旧新资源混用,或者关键请求失败”;若应用包含用户写入,还要记录旧新环境的数据对账与冲突处理方法。
不必等故障后再寻找回退方法。发布与回滚:先设计停止条件,再改生产环境可以帮助你确定哪些变化可直接撤回,哪些需要先处理数据。
先问解析结果来自哪里
模拟记录:时间均为同一天、同一时区
09:00 缓存 A 查询到旧地址,TTL 为 3600 秒
09:10 权威记录的 TTL 降为 300 秒
09:20 权威地址切换为新地址
09:20 缓存 A 仍返回旧地址,剩余 TTL 为 2400 秒
09:20 新查询的缓存 B 返回新地址,TTL 为 300 秒
这组回答并不矛盾:修改权威记录不会主动刷新缓存 A 已经保存的旧回答。TTL 按秒表示缓存时间;实际排查还需记录 resolver、记录类型及查询时间。权威结果和递归缓存不能混为同一个观察点。详见 DNS TTL 应该如何设置;协议字段依据 RFC 1035(复核于 2026-09-06)。
如果在预留窗口后仍返回旧地址,先查实际权威记录、A/AAAA 和别名链,再查缓存策略。不要把固定的“等待若干分钟”当作完成标准,也不要只因一个 resolver 已更新就下线旧服务。
再对照响应头与正文版本
HTTP/1.1 200 OK
Cache-Control: public, max-age=600
Age: 120
ETag: "release-a"
这里假设正文也明确显示 release-a,而发布记录要求 release-b。结论是“当前样本仍为旧版本,发布复查未完成”。Age 反映响应生成或验证后的估计年龄,不能单靠它定位到某个 CDN 节点;没有 Age 也不能证明已回源。RFC 9111定义了这些缓存语义(复核于 2026-09-06)。
先在受控环境核对源站版本,再使用相同 URL、请求头和 Cookie 条件复查缓存响应。若要解读厂商的 HIT/MISS 字段,应使用该服务的官方文档。处理方式可参考 CDN 缓存未命中如何排查,不要用随机查询参数改变缓存键后就宣称原路径已修好。
可把上面的单段响应头粘贴到本地 HTTP 缓存文本工具,查看支持字段的解释与冲突提示。工具不请求目标,省略 ETag 原值及部分其他字段,不判断命中节点或剩余缓存时间;正文版本仍需自行对照。导出前也要检查,省略字段不保证匿名。异常难以复现时,使用空白问题复现模板记录条件与未知项。
失败记录决定下一步
| 观察 | 先做什么 | 复查什么 |
|---|---|---|
| 权威记录仍为旧地址 | 核对修改的主机名和记录类型 | 权威地址及变更日志 |
| 源站本身仍为旧版本 | 检查部署目标和构建版本 | 源站正文与版本标识 |
| 源站已更新,缓存样本仍旧 | 核对缓存键与更新策略 | 相同请求条件的正文版本 |
| 新版本出现功能错误 | 执行停止与回退方案 | 关键操作、错误及数据一致性 |
将时间、环境、预期、实际结果、采取的动作和复查结果写在同一份记录中。也可在上线与分享准备填写并下载本地检查记录;它不会执行网络检查,也不会替你判定发布通过。
改域名时还应逐条核对永久重定向、规范 URL 和抓取规则,依据 Google 的站点迁移说明(复核于 2026-09-06)。这些证据用于决定是否继续切换或保留旧入口;它们不代表跨地区访问、搜索迁移和业务恢复已经一起完成。
练习:缓存字段和正文版本一起复查
把下面的模拟响应头放进 HTTP 缓存文本解读:
HTTP/2 200
Cache-Control: no-cache, max-age=60
Age: 12
ETag: "release-a"
解释区应分别显示:no-cache 要求复用前验证;max-age 声明新鲜度时长;Age 是头字段中的年龄估计;ETag 只检查存在。本站不读取正文,也不从 ETag 的文本推断正文版本,因此还需要你在自己的环境记录实际页面版本。
本练习另给出模拟观察“预期正文为 release-b,当前看到 release-a”。据此可以记录版本未达到预期,但不能把 60 - 12 当作“再等 48 秒必定更新”,也不能确定是哪一层缓存造成。先核对源站是否发布了 release-b,再按同一客户端和请求条件复查中间缓存与正文版本。规则含义参考 RFC 9111(复核于 2026-09-06),不代表本站已验证实际缓存执行。
再将响应头换成失败边界样例:
Cache-Control: public, private, max-age=bad
Age: -1
文本结构可以被读取,但应出现冲突与无效值提示,解释区不会采用 max-age 或 Age 的无效值。这个结果不是“缓存检查通过”。保存已知字段和未知项,核对服务配置后重新采集;若根本没有响应头,就先补采集条件,不能猜一个值填入。
本次记录至少包含观察时间及时区、客户端和请求条件、预期/实际正文版本、冲突项及下一步。完成标准是能说明当前证据与复查动作;只有在自己的环境确认目标版本与关键请求符合预期,才能把该次发布复查写为通过。工具的 JSON 下载用于保留解析字段,观察条件仍需要自行补记。
