先别急着回滚整批发布。草稿混入正式发布后,影响范围通常不是“全站”,而是由发布批次、状态字段和引用关系共同决定的一小块。圈定范围的顺序是:先确认这次发布实际写了哪些记录,再确认这些记录被哪些入口或列表引用,最后只对同时满足“被写入”和“被引用”的部分做处理。下面用两种常见解释来说明怎么区分。
同样是“草稿出现在线上”,原因往往不同,处理范围也完全不同。
这两种情况的共同点是“线上能看到草稿”,区别在于数据层有没有被改动。判断错了,回滚动作就会过大或过小。
不需要逐页翻看,取三个证据基本能定性。
把这三个证据记下来,再决定是修数据还是修查询。修数据的动作重、影响面大;修查询的动作轻,但要确认缓存刷新范围。
假设这次发布是通过一个批次号或发布时间戳标记的,那么第一步是只拉出该批次写入的记录清单,而不是全表扫描。这一步的结果决定了后续要检查多少条内容。
第二步是对清单里的每条记录,检查它是否被以下位置引用:
只有“在该批次清单里”且“被上述位置引用”的记录,才需要优先处理。如果一条草稿记录虽然被写入,但没有任何入口引用,它暂时不会带来可见影响,可以放到后面处理。这个判断能显著缩小要动的范围。
假设一次发布写入了 10 条记录,其中 3 条是草稿。检查后发现:
这时合理的处理顺序是:先撤下首页推荐位的引用,再修标签聚合的查询条件,最后再决定那条无引用的记录是否要改回草稿态。如果一上来就把 10 条全部回滚,会把 7 条正常内容一起撤下,影响面反而扩大。这个例子里的数字只是用来说明比较方法,不代表任何真实批次规模。
改完之后,不要只看草稿是否消失。还要确认三件事:正常内容的详情页仍可访问、列表总数没有异常减少、站内搜索仍能命中原本已发布的内容。如果只盯着草稿消失,很容易把“查询条件改过头”误判为处理成功。
另外,改动前后的对比要考虑季节和搜索需求本身的波动。某一天抓取量或请求量下降,可能来自采集周期差异或需求变化,不能单独作为“处理正确”的证据。比较时尽量用同一时段、同一入口的数据,并注明这是假设条件下的观察方法,而不是固定见效承诺。
如果旧内容、旧系统或旧合作关系需要退出,同时又要保留仍然有价值的部分,那么圈定范围时还应多问一句:这条草稿对应的旧内容,是否还有被引用的价值。有价值的部分可以改为归档态而不是直接删除,这样既退出正式展示,又不破坏已有链接关系。下一步的动作,取决于你确认的是写入污染还是展示污染:前者优先修数据状态,后者优先修查询与缓存。