小流量灰度能暴露全量发布例外,原因是灰度只覆盖了主路径,而蜘蛛抓取频率由全站链接、站点地图、重定向链和旧入口共同决定。只要灰度样本没包含旧内容、旧系统或旧合作关系留下的入口,抓取频率就不会按预期下降,全量发布时例外才集中出现。因此,灰度前应先列出所有仍能被爬虫发现的入口,再决定哪些保留、哪些退出。
假设一个站点要下线旧产品栏目,但保留其中仍被引用的规格页。团队先对首页和新栏目做灰度:首页移除旧栏目入口,新栏目只放保留页链接。灰度期间,新栏目的蜘蛛抓取频率稳定,团队据此判断可以全量发布。全量发布后,旧栏目 URL 仍被外部链接、旧站点地图和旧系统接口指向,爬虫继续按旧路径抓取,抓取频率没有下降,反而把预算分给了大量 404 和重定向页。
这个假设说明:灰度验证的是被灰度的那部分路径,不是全站抓取行为。灰度样本越小,越容易漏掉低频但持续存在的入口。
判断灰度是否有效,不看它覆盖了多少页面,而看它是否覆盖了蜘蛛发现 URL 的所有来源。至少应核对以下入口:
如果灰度只改了导航,而站点地图和旧接口没动,蜘蛛抓取频率就不会因为导航变化而同步变化。此时全量发布暴露的不是灰度失败,而是灰度范围选错了。
旧内容、旧系统或旧合作关系需要退出时,不能只按“是否还有流量”决定。更可操作的判断是:该入口是否仍能产生有效访问,以及它是否消耗抓取预算。可以按以下条件区分:
这里的关键动作是:先统计灰度期间旧入口的实际抓取记录,再决定全量发布时哪些入口需要同步退出。如果旧入口的抓取记录在灰度期间没有下降,说明灰度没有触达该入口,下一步应扩大灰度范围,而不是直接全量发布。
假设团队已经决定全量发布,但担心旧入口例外,可以按以下顺序操作:
这个顺序的结果会直接影响下一步:如果旧 URL 抓取频率在灰度中下降,说明入口已覆盖,可以全量发布;如果没有下降,应先找出未覆盖的入口,再决定是否推迟全量发布。
蜘蛛抓取频率下降,可能是旧入口已退出,也可能是站点整体抓取预算被其他因素占用、爬虫暂时降低访问,或灰度期间访问量本身减少。反过来,抓取频率没有下降,也不一定说明退出失败,可能只是爬虫尚未重新计算。判断时应结合旧 URL 的返回状态、站点地图更新时间和外部链接变化,而不是只看抓取频率一个指标。
因此,小流量灰度的价值不是证明全量发布一定安全,而是提前暴露哪些入口没有被覆盖。把灰度范围对准所有蜘蛛发现 URL 的来源,才能在全量发布前决定保留哪些部分、退出哪些部分,并让下一步动作有依据。