灰度发布只覆盖部分页面或部分路径,它检验的是“被选中样本是否可抓取、可索引”,而全量发布的例外通常来自样本之外:未被灰度覆盖的模板分支、参数组合、权限状态或站点地图分组。把灰度结论直接当成全量结论,是这类分歧的根源。更稳妥的做法是:先明确灰度覆盖了哪些URL模式,再列出全量中与样本不同的条件,最后用可回查的记录逐项核对,而不是凭一次抓取日志就下判断。
假设你手上有一次灰度记录:发布了两百个页面,其中一百八十个被百度抓取,一百五十个进入索引。团队里有人据此认为“新模板没问题,可以全量”。但这个结论只对“与样本同构”的页面成立。要核对的第一件事是样本的选取方式:是按目录随机抽,还是只挑了权重较高、内链较多的页面?如果是后者,样本本身就偏向更容易被抓取的一侧,全量中那些孤立页面、深层目录、低频更新的页面从未被检验。
实际操作上,把灰度URL列表和全量URL列表做一次集合比对,标出三类差异:只在全量中出现的路径前缀、只在全量中出现的模板分支(例如带筛选参数、带分页、带登录态)、以及灰度期间被临时放行的规则。这个比对结果会直接决定下一步是扩大灰度还是先修例外,而不是继续争论“收录率是高是低”。
多个角色对同一事实理解不同,往往是因为各自看的是不同层面的证据。运营看到的是后台提交数量,开发看到的是日志里的抓取请求,SEO看到的是索引结果。这三者不能互相替代。把它们转成一张可核对的项目表,比反复解释更有效:
每一项都要求给出可回查的原始记录,而不是口头结论。当某个URL在抓取侧有请求、索引侧没有结果时,分歧就从“谁说得对”变成“下一步该查哪个条件”。
假设某站点灰度时只发布了文章详情页,全量时还要发布标签聚合页和搜索结果页。灰度期间详情页抓取正常,于是团队判断模板无问题。全量上线后,标签聚合页大量未被索引。此时若只看“灰度通过”这一条,会误判为搜索引擎延迟;但把两类页面分开核对就会发现,聚合页与详情页的差异在于:聚合页内容由列表拼成、更新频繁、且带分页参数,而灰度样本里根本没有这类页面。
这个例子的数字仅用于说明比较方法,不代表任何真实站点的表现。它的价值在于揭示一个动作:把灰度结论的适用范围写清楚,标注“本结论仅适用于详情页模板,不覆盖聚合页与分页”。这个标注会直接影响下一步——是继续灰度聚合页,还是先处理分页参数与canonical,而不是直接全量放开。
在把灰度结论推广到全量之前,至少完成以下动作,并记录每项的结果如何改变决策:
如果某类分支的抓取请求量在灰度后归零,不要立刻判定为“规则生效正确”。归零也可能来自发布延迟、日志采集范围变化、或该分支本身URL数量极少。需要结合原始日志与索引结果一起看,才能区分“确实被挡”与“只是没被请求”。
灰度真正的作用不是给出“能或不能全量”的二元答案,而是暴露全量中尚未被覆盖的条件。把这次暴露出的例外整理成下一轮灰度的样本,再重复核对抓取、索引、站点与协议四个层面,全量发布的风险才会被逐步收窄。对读者手上的那份资料或页面而言,可执行的起点是:先写下“当前结论覆盖了哪些URL模式”,再写下“全量中还有哪些模式未被覆盖”,这两份清单的差集,就是你需要优先核对的对象。