先给结论:不要因为“需求取消”就直接下线,也不要因为“已经开发完”就默认留用。判断依据应当是可核对的证据——这条功能是否仍在产生真实访问、是否承担了未被注意的依赖、保留它每年要付出多少维护成本。三项证据指向不同结论时,以依赖和成本为准,访问量只作参考。
实际工作中常见一种反直觉情况:需求方明确说这个功能不做了,后台却仍能看到零星访问。有人据此认为“用户还需要它”,于是保留;也有人认为“需求都取消了,访问只是爬虫或误点”,于是直接下线。两种判断都可能出错,因为访问日志本身不能区分访问者是谁、为什么来。
要区分这两种解释,需要把访问拆开看。真实用户访问通常带有来源页、会话路径和后续行为;误点或爬虫往往表现为单页跳出、无来源、同一路径高频重复。如果一条功能只在站内旧链接、旧邮件或旧二维码中被触达,那它服务的是历史入口,而不是当前需求。
需求取消只说明“不再新增投入”,不等于“没有任何东西依赖它”。常见隐性依赖包括:其他页面直接链接到该功能、表单提交数据已接入某个统计或通知流程、外部渠道(如印刷物料、已发出的推广链接)指向该地址。这类依赖不会出现在需求文档里,但下线后会立即产生断链或数据中断。
核对方法很直接:在站内做一次全量链接检查,确认有多少页面指向该功能;查看表单或接口的提交记录,确认是否仍有非测试数据流入;检查已发布的外部渠道清单,确认是否有无法快速修改的入口。任何一项成立,就说明下线需要先处理依赖,而不是先删代码。
另一种更常见的情况是:功能上线后需求取消,但没有人被指派处理它,于是它一直挂在站点上。它没有真实访问,没有外部依赖,只是每次改版、升级框架或调整导航时都要被顺带检查一遍。这类功能的问题不是“有没有用”,而是“持续消耗注意力”。
识别信号包括:访问量长期接近零且无来源;代码中没有任何其他模块引用它;最近的维护记录里,它只出现在“兼容性检查”“样式回归”这类被动事项中。如果三项都符合,留用的理由通常只剩“删了怕出问题”,这属于风险判断,不属于价值判断。
可以按下面的顺序核对,每完成一步都会影响下一步的动作:
假设一个页面功能已开发完成,需求取消,站内有两个旧链接指向它,近三个月无真实提交,代码中无其他引用。按上述顺序,先移除两个旧链接,观察访问是否归零;若归零,即可安排下线,并在下线前保留一份代码归档,以便未来需求恢复时参考。
如果证据支持留用,动作不是“放着不管”,而是把它标记为“冻结”:在代码注释或内部文档中写明保留原因、依赖方和复查日期。这样下一次改版时,维护者能快速判断它是否可以跳过。如果证据支持下线,动作也不是直接删除,而是先移除入口、观察一个访问周期,确认没有异常请求后再清理代码和配置。
需要提醒的是,访问量归零不能单独证明下线正确。它也可能意味着统计代码失效、入口被其他改动顺带屏蔽,或者观察周期太短。因此下线决策至少要有两个独立证据支持:入口层面无有效来源,依赖层面无未处理引用。两者同时成立,再执行清理,后续的维护负担才会真正下降。