结论有前提:只有当功能开关的每个状态都能对应到一份可独立访问、可指认时间点的页面快照时,版本记录才有助于判断网站不收录问题出在哪个状态。如果开关状态与输出内容之间没有稳定映射,记录再详细也只是事后猜谜。下面先给出可操作的做法,再说明什么情况下这套做法会失效。
功能开关通常不是单一布尔值,而是多个开关叠加后决定页面渲染结果。记录版本状态的第一步,不是记开关本身,而是记“哪组开关产生了哪份页面输出”。
具体动作:为每个会影响正文、导航或结构化数据的开关组合生成一份静态快照,存入版本目录,命名包含开关组合标识和生成时间。快照内容至少保留渲染后的HTML、HTTP响应头中的内容类型与缓存相关字段、以及该组合下页面实际可见的文本。
这个动作的结果会直接影响下一步:如果快照之间只有样式差异、可见文本一致,版本记录可以简化;如果可见文本或链接结构随开关变化,就必须把每份快照当作独立版本对待,后续排查不能混用。
只写“某日改了开关”没有区分力。能帮助判断的原因至少分三类,记录时应能互相区分:
记录时把这三类分开写,而不是笼统标注“页面已更新”。这样当某个版本没有出现在索引中时,你能先判断是内容本身的问题,还是该版本根本没有稳定的可访问入口。
假设某页面用开关控制“是否显示完整正文”:关闭时只输出摘要,开启时输出全文。你为两个状态都留了快照,并认为版本记录完整。但如果开关的默认值依赖用户地区、登录态或A/B分桶,同一时刻不同访问者看到的输出并不一致,那么“快照对应某个版本”这个前提就不成立。
此时版本记录无法回答“搜索引擎看到的是哪个状态”,因为根本不存在单一状态。继续按快照对比只会把随机差异误判为版本差异。遇到这种情况,正确动作是先固定一个可复现的访问条件,再在该条件下生成快照;否则应放弃用版本对比来解释收录变化。
另一个边界:如果开关只影响与正文无关的展示模块,而页面主体内容不变,那么为每个组合单独建版本通常得不偿失,记录成本会超过它能提供的判断价值。
记录本身不是终点。可用的版本记录应能回答一个具体问题:当前未被收录的页面,对应的是哪个开关状态,以及该状态是否具备独立可访问的入口。
这样做的结果是:版本记录只在能缩小原因范围时才保留,不能缩小范围时就停止投入,避免把记录变成没有判断价值的流水账。