小流量灰度能提前暴露网址收录的例外,但它只对“被放量命中的那部分 URL”有效。如果灰度样本没有覆盖新模板、参数组合或重定向链路,全量发布后仍会出现一批 URL 既不抓取也不收录。判断该不该按灰度结果直接全量,关键不是看灰度期间收录了多少,而是看灰度组与全量组在 URL 生成规则、内链入口和响应行为上是否同构。
假设一个场景:某站点改版分类页模板,计划先放量 5% 的分类页观察收录,再决定是否全量。这里“5%”通常按页面或流量切分,但分类页存在分页、筛选参数和排序参数三种变体。灰度如果只覆盖无参数的主分类页,全量后带参数变体大量进入内链,就是灰度没暴露的例外。
要判断这种风险,先做一件事:把灰度命中的 URL 与全量预计生成的 URL 各导一份清单,按路径规则比对差集。差集里如果集中出现 ?page=、?sort=、?filter= 这类模式,说明灰度结论不能直接外推。这个动作的结果会决定下一步:若差集很小且都是低价值变体,可以按灰度结论推进;若差集覆盖主要流量入口,就必须先补一轮针对变体的灰度,而不是直接全量。
灰度期间日志里抓取请求变多,常被当成正面信号。但抓取只说明爬虫来过,不说明页面被索引。更常见的例外是:灰度组页面返回 200,但正文由前端脚本注入,爬虫抓到的是空壳;全量后同一模板铺到更多 URL,空壳比例放大,收录反而停滞。
区分原因时看两组证据:一是抓取响应体里是否含目标正文文本,二是索引结果里是否出现该 URL 的可见内容。如果抓取正常而索引缺失,问题多半在渲染或内容可见性;如果抓取本身就少,问题在内链或入口。两种原因对应的下一步完全不同,不能都用“再多放量看看”来应对。
面对灰度结果,通常有两种做法:直接全量,或按 URL 类型分批全量。
选择依据不是“哪个更稳”,而是灰度样本与全量样本的差异有多大。差异小就直接全量,差异大就分批,并把每一批的 URL 集合单独记录,方便定位例外来自哪一类。
假设某站灰度放量 100 个分类页,其中 80 个被抓取、60 个出现在索引结果中。团队据此判断模板可用,随即全量发布 5000 个分类页。全量后若发现索引增长远低于灰度比例,先别急着归因于模板。合理解释至少有三种:全量新增的 URL 大多没有内链入口;新增 URL 集中在参数变体,灰度没覆盖;站点地图提交了但站点地图本身不保证收录。这三种解释指向的动作不同,需要分别用内链清单、URL 类型分布和抓取日志去核对,而不是把灰度比例直接当预期。
灰度不是只看一个收录数字。为了让全量发布可判断、可回退,至少记录三类信息:灰度命中的 URL 清单及其类型、这些 URL 的抓取与索引状态、全量预计新增的 URL 规则。全量发布后,用同一套规则再取一次状态,对比差集。
如果差集集中在某一类 URL,回退或修正就针对这一类,而不是整站回滚。这样做的结果是:例外被定位到具体规则,下一步可以只调整该规则的生成或内链,而不必推翻已经生效的部分。灰度真正的价值,是让全量发布时的例外有据可查,而不是证明模板一定没问题。