灰度只覆盖主站入口和少量内页时,规范化看起来成立;一旦全量发布,例外往往来自灰度未触达的路径、参数和跨域跳转。下面用一个假设情境,说明如何用可核对证据把例外的来源分清,并决定下一步是扩大灰度、改规则还是回退。
假设某站点把带 ?ref= 的列表页规范到无参数版本,灰度只选了首页和三个栏目页,观察期内带参数版本在抓取日志中减少,于是决定全量发布。全量后一周,站点发现旧参数路径仍出现在抓取日志里,且部分来自站外链接。这个结果与“规则已生效”的直觉相反,但它并不自动说明规范化失败。
此时先做区分:抓取日志里出现旧路径,可能是外链仍指向旧地址,可能是站点地图或分页仍输出旧地址,也可能是灰度期间未覆盖的模板在生成旧链接。三种解释对应不同动作,不能只用“抓取量归零”当作唯一判据。
灰度选样如果偏向入口页,最容易漏掉三类路径。第一类是参数由前端脚本拼接的页面,服务端返回的规范化信号在灰度页上被脚本覆盖,全量后其他模板沿用同一脚本,旧参数地址继续被请求。第二类是分页、筛选和排序组合,灰度只测了单参数,全量后出现多参数叠加,规范化目标互相冲突。第三类是跨域跳转,灰度只测站内链接,全量后站外来源的跳转链把旧地址重新带入。
要判断属于哪一类,可以按同一路径分组对比:带参数的请求是否来自站内链接、站外引荐还是直接访问;响应中规范化指向的目标是否与站点地图输出一致;同一模板在灰度页和全量页上的输出是否相同。这些证据能帮助把“例外”落到具体模板或具体来源,而不是笼统归因于规则没生效。
规则失效与外部残留的表现不同。规则失效时,同一模板在不同页面上会给出不一致的规范化目标,且站内新生成的链接仍指向旧地址。外部残留时,站内新生成的链接已经指向规范地址,但抓取日志中的旧地址带有站外引荐来源,且这些旧地址的响应仍可访问。
可以按以下顺序核对,每一步都记录结果,再决定下一步:
如果第 1 步发现不一致,优先修模板;如果第 1 步一致而第 3 步显示站外来源占多数,则更可能是外部残留,扩大灰度不会解决,需要处理链接或保留可访问的跳转。这个判断直接影响下一步:是继续扩大灰度,还是先改规则再发布。
与其把灰度理解为“放一小部分流量”,不如把它理解为“放一小部分模板和来源组合”。一个可执行的动作是:在灰度阶段按模板类型、参数组合和引荐来源分层抽样,每层至少保留可核对的请求样本。全量前,先比较各层的规范化目标是否一致;若某一层缺失样本,就先补测该层,而不是直接全量。
这个动作的结果会改变下一步。如果分层抽样显示所有层一致,全量后出现的旧地址更可能来自外部残留,处理重点是外链和跳转,而不是回退规则。如果抽样显示某层不一致,说明灰度样本本身有偏,应先修该层模板再全量。两种情况下,回退都不是默认选项。
处理旧地址时,robots.txt 的抓取限制不等于可靠的索引移除,它只限制抓取,不保证已收录地址从结果中消失。站点地图也不保证收录,它只是候选来源。若旧地址仍可访问,保留其可访问性并给出明确的规范化目标,通常比直接封禁更利于核对。若确实需要移除,应分别核查不同搜索引擎的支持情况,不能假设一种做法在所有引擎上等效。
灰度暴露例外,本身不是失败信号。它说明灰度样本没有覆盖全量发布后的真实来源组合。把例外按模板、参数和来源拆开,用可核对证据决定是补测、改规则还是处理外部残留,比直接回退或直接全量更接近可复用的判断。