小流量灰度只验证了主路径,全量发布却把旧内容、旧系统或旧合作关系一并推给所有用户,例外就在此时集中出现。要判断保留、改写还是退出,先做一次可回退的小范围试验,把例外变成可观察的证据,再决定下一步动作。
灰度通常按用户比例或流量比例切分,被抽中的往往是最近活跃、路径最标准的用户。旧内容被访问、旧系统被调用、旧合作关系仍在生效的场景,恰恰集中在低频入口和边缘账号上,很难被随机分到。
一个常见现象是:灰度期间收录量、抓取量或某项统计几乎归零,团队据此认定处理正确。但归零还有别的合理解释——样本太小、目标页面本来访问就少、抓取被 robots.txt 限制、或统计口径只覆盖了部分入口。抓取限制不等于可靠的索引移除,统计归零也不能单独证明旧内容已经安全退出。
因此灰度阶段要主动加入例外样本,而不是等全量后被动发现。可用的做法包括:
三种取舍不是按偏好选,而是按证据选。
保留成立的前提是:旧对象仍在被真实访问,且其内容对当前用户仍有独立价值,同时维护成本可控。此时应把它从灰度例外中单独列出,明确它继续存在的理由,而不是默认它会被新版本覆盖。
改写成立的前提是:旧对象的核心信息仍有需求,但形式、入口或合作关系已经变化。改写要指向一个具体差异,例如把只服务旧渠道的页面并入新流程,而不是整站重写。
退出成立的前提是:旧对象已无有效访问,或继续存在会与新流程冲突,且退出后不会切断仍在使用的入口。退出前要确认没有其他系统或合作方依赖它。
如果证据不足以区分三者,先选可逆的动作:保留但隔离,观察一段时间再决定,比直接删除更容易回退。
假设某网店把商品详情页迁移到新模板,灰度只覆盖了近 30 天有下单记录的用户。全量发布后,来自旧合作渠道的链接仍指向旧地址,这些链接在灰度中从未被抽中。
此时可做的最小动作是:为旧地址加一层可观测的跳转,并记录跳转命中量与来源。若命中量持续存在且来源集中,说明旧合作关系仍有价值,应保留或改写;若命中量在合理观察期内趋近于零,且没有其他系统调用,才考虑退出。这个动作的结果直接决定下一步:有命中就继续维护映射,无命中才进入退出流程。
需要注意,站点地图不保证收录,HTTPS 也不保证安全无漏洞或排名提升;这些因素不能替代对例外本身的判断。
全量发布前,先列出一份例外清单,逐项标注:对象类型、当前访问来源、是否被灰度覆盖、保留或退出的初步判断、以及验证方式。清单的价值在于让每个例外都有对应的证据来源,而不是靠印象决定。
验证时优先选择可重复、可对照的方式:同一入口在不同版本下的表现、同一账号在灰度与全量下的差异。若不同搜索引擎对旧地址的处理不一致,需分别核查,不能用一个引擎的结果推断另一个。
当例外数量较多时,按影响面排序,先处理仍被真实访问的部分,再处理仅剩历史痕迹的部分。这样即使全量发布后出现问题,也能快速定位到具体对象,而不是整体回退。
下一次灰度前,把这次暴露的例外类型写进抽样规则:旧入口、旧参数、旧合作渠道各保留固定样本。灰度不再只验证新路径是否可用,还要验证旧路径是否被正确接管。
同时保留一份退出记录,说明每个对象为何退出、依据是什么、由谁确认。记录的作用不是留档,而是在下一次有人质疑时能直接调出证据,减少重复讨论。
全量发布不是终点,例外清单和抽样规则需要随系统变化更新,否则同样的漏检会在下一次迁移中重演。