先别急着全站回滚。混入草稿的影响范围,取决于草稿是否被提交到线上仓库、是否生成可访问 URL、是否进入导航或站点地图,以及是否被外部发现。把这四点查清,再决定是局部修正还是整体回退。
一次发布混入草稿后,常见的矛盾现象是:页面在后台列表里能看到,但用无痕窗口打开却未必正常。这通常对应两种不同解释。
区分这两种解释,最直接的动作是取一条草稿的完整 URL,在退出登录的状态下请求一次,记录状态码和返回内容。如果返回 200 且正文是草稿内容,按解释一处理;如果返回 404、403 或跳转到其他页面,按解释二处理。这个结果决定下一步是清理线上产物,还是只修正发布流程。
确认草稿可访问后,不要凭感觉判断波及面。以下三条证据能把范围压到可操作的粒度。
这里要提醒一点:日志里某条路径请求量为零,不能单独证明它没被处理。请求可能来自缓存、可能被合并进其他路径统计,也可能只是观察窗口太短。把日志和站内入口证据放在一起看,结论才稳。
圈定范围后,处理动作应和影响级别对应,而不是一律全站回退。
一个假设例子:某次发布混入 3 条草稿,其中 1 条被加进了列表页。按上面的顺序,先撤列表页链接,再让该 URL 返回 404,另外 2 条直接从产物删除。这样处理的范围是 3 条,而不是整站回退。假设回退整站,正常更新的页面也会一起消失,恢复成本反而更高。
范围处理完之后,要回到产生问题的环节。混入草稿通常不是单点失误,而是发布条件里缺少一道判定。
可以增加一个发布前检查:在构建或部署阶段,扫描产物中是否存在标记为草稿的条目,存在则中止发布并输出清单。这个动作的结果会直接影响下一次发布——如果检查能拦住,说明问题出在状态判定;如果检查通过但线上仍出现草稿,说明草稿标记没有传递到构建环节,需要往上游查。
另外,比较改动前后数据时,要把季节、搜索需求变化和数据采集差异考虑进去。一次修正后流量或抓取量的波动,可能来自这些因素,而不是处理动作本身。不要用单次对比下因果结论。
整体回退只在一种条件下更合适:草稿混入的同时,正常内容也被改坏,且无法快速区分哪些文件属于本次异常。此时回退是为了先恢复可用状态,再逐项重做。如果异常只涉及少量草稿,局部清理通常更快,也不会牵连已经验证过的改动。
判断依据不是“出了错就回退”,而是“能否在短时间内把异常条目和正常条目分开”。能分开,就局部处理;分不开,才整体回退。这个取舍决定了后续排查是在干净基线上进行,还是在混杂状态里反复试错。