先给结论:不要只记录“开关是开还是关”,而要记录开关状态、生效范围、可见内容快照、抓取响应和决策人五项,并把它们绑定到同一个版本号。这样,当运营、开发、SEO对同一页面看到的内容不一致时,你们核对的是同一份事实,而不是各自的记忆。
功能开关引起的页面变化,通常落在三个层次,混在一起讨论就会吵不清:
判断属于哪一层,有一个简单动作:对同一URL分别用未登录、无Cookie、带目标地区出口三种条件请求一次,保存状态码、最终URL和正文前若干字符。如果三者不一致,先解决可访问性,再谈收录。若三者一致但正文不同,才进入版本记录环节。
版本记录的最小可用结构可以放在一个纯文本文件或工单字段里,关键是字段固定、可对比。假设一个页面在开关关闭时展示A模块,开启时展示B模块,可以这样记:
version:自增编号,例如 v14。url:规范化后的URL,去掉跟踪参数。flag:开关名称与取值,例如 new_intro=on。scope:生效范围,是全量、按地区、按登录态,还是按比例。按比例时要写明比例,不要只写“灰度”。visible:该状态下实际可见的核心内容摘要,用一两句话描述,不要复制整页。response:状态码、最终URL、是否要求登录。owner:谁决定开启或关闭,谁负责回滚。checked_at:核对时间。这套字段的价值在于:当有人问“为什么百度看到的是旧内容”,你能直接指出当前生效的是哪个版本、哪个开关、哪个范围,而不是重新去猜。记录动作本身不改变抓取结果,但它决定了下一步是改开关、改渲染,还是改内容。
多个角色对同一事实理解不同,往往不是谁在说谎,而是观察条件不同。下面这组证据可以把分歧拆开:
这里要提醒一点:抓取量或某次请求的返回结果归零,不能单独证明开关处理正确。它也可能是抓取调度波动、临时限流或缓存未更新。把单次现象当成结论,会让版本记录失去可信度。
假设某栏目页的开关compact_list默认关闭,关闭时列出20条,开启时只列出5条并加载更多。运营在开启状态下看到5条,认为页面“内容变少”;SEO在未登录无Cookie条件下看到20条,认为“没变化”。
处理动作:先在版本记录里新增v15,写明compact_list=on、范围为新访客、可见内容为5条加加载更多、响应为200。然后分别用新访客条件和回访条件各请求一次,把结果写入同一条记录。结果发现新访客拿到5条,回访拿到20条。此时分歧被转成一个可核对的事实:开关按访客类型分流,而不是全量变化。下一步要决定的是,这种分流是否影响希望被收录的正文主体;如果影响,就调整开关范围或让服务端输出稳定内容,而不是继续争论“页面有没有变”。
版本记录写完后,至少要做一次回看:把当前版本与上一个版本的visible和response并排比较。如果只有展示层不同,优先级可以放低;如果正文主体、状态码或最终URL不同,就要优先处理,因为这类差异更容易影响页面被理解和收录。
另外,站点地图提交、robots.txt调整都不能替代这一步核对。站点地图不保证收录,robots.txt的抓取限制也不等于可靠的索引移除。它们只是辅助手段,前提是你已经知道页面在哪个版本、哪个开关下实际输出了什么。把开关状态和版本记录绑定起来,分歧才会变成可核对的项目,后续动作也才有依据。