小流量灰度只验证了被选中的那一小部分样本,全量发布时,未被选中的页面类型、参数组合和目录层级会带来新的例外。要判断例外是否值得处理,先看灰度样本是否覆盖了全量发布中的每一类模板和每一类入口,再看收录查询结果里“未收录”集中出现在哪一类页面上。
两种条件下的选择不同。条件一:灰度放量的是同一模板下的若干页面,且这些页面共享相同的 canonical、分页和参数规则,那么灰度通过只能说明这套规则在这类页面上没有明显冲突,全量发布的风险相对可控。条件二:灰度放量的是首页、栏目页和详情页的混合样本,但每类只放了几条,那么灰度通过不能推断全量安全,因为模板之间的链接结构、分页深度和参数生成方式可能完全不同。
判断依据可以落到一个动作上:把灰度期间被放量的 URL 按模板分组,统计每组实际被查询到的数量,再和全量发布后同一模板的 URL 总量对比。如果某个模板在灰度中只占个位数,而全量发布后该模板占站点 URL 的很大比例,这个模板就是需要单独验证的例外来源。这个动作的结果会直接决定下一步:样本比例过低的模板不能直接进入全量,应先补一轮针对该模板的小范围放量。
全量发布后做收录查询,常见三类结果需要分开看。第一类是抓取被限制,例如 robots.txt 或页面级 noindex 拦截了目标页面;这类问题在灰度中如果只测了可抓取样本,就不会暴露。第二类是抓取成功但未进入索引,原因可能是内容重复、canonical 指向了别的 URL,或者页面主体内容依赖客户端渲染而抓取时拿不到。第三类是已收录但查询不到,这通常和查询方式、查询入口或索引更新延迟有关。
要区分这三类,不能只看一个“未收录”的数量。可以按下面的顺序做一次抽查:
这里有一个关键取舍:如果未收录集中在“只通过参数入口被发现”的 URL 上,处理参数规则比批量提交更有效;如果未收录分散在多个模板且抓取正常,则更可能是内容或 canonical 层面的问题。robots.txt 的抓取限制不等于可靠的索引移除,站点地图也不保证收录,这两点在全量发布后尤其容易误判。
假设某站点灰度阶段只放量了 20 个栏目页,收录查询显示大部分正常。全量发布后,新增了数千个详情页,收录查询发现详情页大量未收录,而栏目页仍然正常。此时不能把栏目页的灰度结论套到详情页上。
合理的下一步是:先确认详情页是否被请求过。如果日志显示详情页几乎没有被抓取,检查它们是否只通过列表页的分页链接被发现,以及分页链接是否可抓取。如果详情页被抓取但未收录,检查详情页之间是否存在大量相似内容、canonical 是否指向了列表页或错误 URL。这个例子的数字只是示意,用来说明样本类型和全量类型不一致时,灰度结论不能直接外推。
当收录查询暴露出多个例外时,优先处理影响面最大且可验证的那一处。判断标准有两条:一是这类 URL 在全量新增 URL 中的占比,二是修复后能否用同一批 URL 重新查询来验证。例如,如果某个模板的 canonical 全部指向了错误地址,修复 canonical 后重新查询同一批 URL,就能观察到结果是否变化;如果只是笼统地“提交更多 URL”,则很难判断是提交起了作用还是索引自然更新。
实施动作可以拆成三步:先锁定一个模板,再只改这一个模板的规则,最后用同一批 URL 复查询。复查询时,如果未收录数量没有变化,不要立刻断定修复无效,因为索引更新存在延迟,且查询结果本身可能受查询入口影响。此时应保留原始状态,等下一次查询再比较。如果变化只出现在被复查询的那批 URL 上,而其他模板没有变化,说明修复的作用范围是局部的,下一步再处理下一个模板。
灰度能降低风险,但只在样本覆盖了全量发布中的主要模板、入口和参数组合时,才能作为全量发布的依据。如果灰度只覆盖了首页和少量栏目页,而全量发布新增了大量详情页、标签页或筛选页,那么灰度通过只说明已测部分没有明显问题,不能说明未测部分不会出现例外。
实际操作中,可以把全量发布前的检查收敛为一个动作:列出全量发布将新增的 URL 类型,逐类确认灰度中是否有对应样本。没有对应样本的类型,要么补测,要么在全量发布后单独做一次收录查询,并准备好回退或修正规则。这样,灰度暴露的是已知范围内的例外,全量发布暴露的是未知范围内的例外,两者不能互相替代。