先给结论:不要急着改掉原有字段,也不要因为字段不够就重做整站。更稳妥的做法是保留旧字段继续承担已有链接的解析职责,同时新增一组可选的扩展字段,让新链接先走新结构,旧链接通过回退规则继续可用。只有当旧字段已经无法表达链接的真实语义,并且迁移成本可控时,才考虑改写或退出。
上线后觉得字段不够用,常见原因有两类,处理方式完全不同。第一类是链接确实承载了原先没预料到的信息,比如从普通跳转变成了带状态的深链,需要额外记录来源、目标位置或权限范围。第二类其实是链接语义没有被明确定义,编辑时随手往标题或描述里塞信息,导致看起来字段不够,实际是使用方式混乱。
可以用一个可核对的证据来区分:抽取最近新增的一批链接,看它们缺少的字段是否反复出现在同一类页面上。如果同类链接都缺同一个信息,说明是结构问题,值得扩展;如果每一条链接缺的东西都不一样,说明是使用习惯问题,应先统一链接的写法,而不是继续加字段。
这里要避免一个直觉陷阱:链接点击量下降或某个字段长期为空,并不能单独证明字段设计错误。空字段可能只是内容还没铺开,点击下降也可能来自入口位置变化或内容本身调整。把这些现象直接归因于字段不够,容易做出过度修改。
面对字段不够用,通常有三条路,但不必都选,关键看前提是否成立。
三种选择不是按优劣排序,而是按条件成立与否排序。条件不成立时强行改写或退出,往往比字段不够用本身带来更多问题。
扩展字段的常见做法是把新增信息放进查询参数或片段标识里,让旧解析逻辑忽略不认识的部分。例如旧链接写成:
<a href="/detail?id=42">查看详情</a>
需要补充来源和定位时,可以写成:
<a href="/detail?id=42&from=list&anchor=price">查看详情</a>
这样旧逻辑仍然能通过 id 找到内容,新逻辑可以额外读取 from 和 anchor。前提是旧解析不会因为多出参数而报错。如果不确定,先在一个不影响主流程的页面上加参数测试,确认页面仍能正常打开,再推广到其他链接。
需要提醒的是,片段标识 # 后面的内容不会发送给服务器,如果扩展字段需要服务端参与处理,应放在查询参数里;如果只用于前端定位,放在片段里更合适。这个区别会直接影响你选择哪种扩展位置。
假设一个内容站上线后,列表页链接只记录了内容编号,后来需要在详情页显示用户是从哪个列表位置点进来的,以便返回时定位。此时旧链接仍然只有编号,新链接可以追加位置参数。
处理顺序可以是:先保留旧链接不动,确保已有入口继续可用;再给新生成的列表链接加上位置参数;然后在详情页读取参数,存在时记录来源,不存在时按默认行为处理。这样做的结果是旧链接不报错,新链接获得更多信息,下一步可以根据实际使用情况决定是否回填旧链接。
如果反过来,先批量改写所有旧链接,再发现部分外部页面仍在用旧格式,就会同时面对解析失败和排查成本。这个假设说明的是顺序差异带来的不同后果,不是真实项目数据。
扩展字段上线后,至少验证三件事:旧链接是否仍能正常解析,新链接的新增字段是否被正确读取,以及两种链接混合出现时页面表现是否一致。验证时不要只看请求量或抓取量是否归零,因为请求量变化还可能来自缓存、入口调整或统计口径变化,不能单独作为字段处理正确的证据。
如果验证通过,下一步是把扩展字段的写法固定下来,避免同类链接出现多种参数组合;如果验证不通过,优先检查回退逻辑,而不是继续增加新字段。只有当回退逻辑本身无法满足需求时,才回到改写或退出的取舍上重新判断。