灰度发布只让少量 URL 进入新模板或新配置,全量发布却把所有历史 URL 一并推过去。如果灰度期间百度抓取的是被选中的少数页面,而全量时未选中的页面带有不同的 robots、canonical 或渲染路径,那么灰度结论不能直接外推。正确做法是:先在灰度中识别“可外推”和“不可外推”两类 URL,再决定全量节奏。
假设一次改版只对“最近更新的文章”使用新模板,灰度选中的也是这批文章。它们通常有更频繁的内链、更近的修改时间,抓取优先级天然偏高。全量时,真正需要验证的却是多年未动的旧页面。旧页面可能带有过期的 canonical、指向已下线的分页,或者依赖一段只在特定参数下才渲染的脚本。
这时灰度的“正常”只是样本正常,不是机制正常。要区分两种解释:一是新配置本身有问题;二是新配置对旧页面类型不适用。判断依据不是灰度页面有没有被收录,而是灰度页面与全量页面在 robots 元标签、canonical 目标、渲染依赖和站内链接深度上是否一致。任何一项不一致,灰度结论就只能限定在同类页面。
有两个成立条件不同的选择。
选择依据可以落成一张核对表:把站点 URL 按“模板类型 × canonical 状态 × robots 状态”分组,看灰度命中了哪些组。若仍有组为空,先补组,再全量。
实施动作:在灰度阶段维护一份例外清单,记录灰度中出现的反直觉结果,例如某个页面被抓取但未展现、某个页面 canonical 指向了非预期目标。对每条例外,标注它属于哪一组 URL,以及全量时这组 URL 是否会进入新配置。
这个动作的结果直接影响下一步:如果例外集中在某一组,全量时应对该组单独设置观察窗口,而不是等全量后再排查。如果例外分散且每组都有,说明问题更可能出在配置本身,应先修复再全量。
需要注意,robots.txt 的抓取限制不等于可靠的索引移除;站点地图不保证收录。灰度中看到“抓取量下降”或“收录量归零”,不能单独证明新配置正确。合理解释还包括:抓取预算被其他任务占用、站点地图刚更新尚未被处理、灰度 URL 本身被 noindex 但未被发现。要区分这些解释,应核对服务器日志中百度蜘蛛的请求路径,以及页面响应中的 robots 与 canonical 实际值。
全量发布后,把实际出现的例外与灰度例外清单对比。若某类例外只在全量出现,说明灰度样本未覆盖该类型;若同类例外在灰度已出现但被忽略,说明灰度结论的采纳标准过松。这两种原因对应不同的修正:前者扩大灰度分组,后者收紧灰度通过条件。
HTTPS 不保证安全无漏洞或排名,因此不要把“已启用 HTTPS”当作灰度通过的独立理由。灰度通过应基于具体页面在抓取、canonical、渲染和索引状态上的可核对结果,而不是传输层配置本身。
假设站点有 1 万个 URL,其中 500 个是近期更新的文章,9500 个是历史页面。灰度只选了 50 个近期文章,全部正常。此时直接全量,历史页面可能因 canonical 指向旧路径而无法进入新索引。更稳妥的选择是:从历史页面中按参数类型各抽 20 个加入灰度,观察其 canonical 与抓取路径是否与近期文章一致。若一致,再全量;若不一致,先修复历史页面的 canonical 规则。
这个例子的数字仅用于说明分组比较方法,不代表任何真实站点的比例。关键不是抽多少,而是灰度样本是否覆盖了全量中存在的 URL 类型。覆盖不全时,灰度越顺利,越容易掩盖全量例外。