先给一个可执行结论:把“唯一正文”留在最稳定的地址上,其他栏目只做引用、摘要或受控同步;凡是需要人工重复粘贴的地方,都要留下可核对的来源标记。这样做的直接结果是,后续更新只改一处,其他入口要么自动跟随,要么明确提示“此处为摘要,完整内容见来源页”。判断是否该继续拆分,不看栏目多少,而看同一字段是否出现两个以上可独立修改的副本。
同一内容进入多个栏目,常见的合理情况有三种:导航聚合、专题推荐、多语言或地区入口。它们共享同一份正文,只是展示位置不同。危险情况是编辑在A栏目改完标题,又去B栏目改摘要,再过一段时间发现两处日期和作者不一致。此时问题不是栏目太多,而是缺少单一来源约定。
可以拿你手上的一个页面做检查:找出标题、正文、发布时间、作者、主图这五个字段,看它们分别出现在几个栏目里。若同一字段有两个以上可编辑位置,就属于需要处理的对象。若只是列表页调用标题和摘要,而正文仍指向同一个详情地址,通常不必拆成多份内容。
处理顺序可以固定为四步。第一步,选一个“主地址”,通常是内容最完整、路径最稳定、将来最可能被外部引用的那个页面。第二步,给主地址一个不会随栏目调整而变化的标识,例如内容编号或固定别名;不要只依赖栏目路径。第三步,其他栏目只保存引用关系,不保存正文副本。第四步,在编辑后台或内容表中记录“来源编号”,让后续更新能反查。
假设一个活动介绍同时出现在“新闻”和“活动”两个栏目。若两个栏目各自保存一份正文,编辑只改了新闻栏目的时间,活动栏目仍显示旧时间,访问者会看到两个版本。若活动栏目只保存来源编号和一段摘要,正文由主地址提供,那么改主地址后,活动栏目展示的摘要和跳转都指向同一版本。这个例子只说明比较方法,不代表任何平台的现行功能。
实际动作是:先冻结一个主地址,再给其他栏目建立引用字段。这个动作的结果会直接影响下一步——如果引用字段能稳定工作,后续只需维护主地址;如果引用字段经常失效,就要回到栏目结构,检查是否把展示位置和内容存储混在了一起。
发现两个栏目显示不同内容,不要先归因于缓存或程序错误。可核对的证据包括:两边最后修改时间、修改人、来源编号、摘要字段是否被单独编辑过。若时间相同但正文不同,可能是同步任务没有覆盖某个字段;若时间不同,可能是编辑只更新了其中一个副本;若来源编号为空,说明引用关系从未建立。
还有一种反常情况:改完主地址后,某个栏目反而没有变化。这不一定说明主地址失效,也可能是该栏目保存的是独立摘要,或者展示层读取的是旧字段。请求量、抓取量或某个统计归零,同样不能单独证明处理正确,因为缓存、权限、采集范围变化都可能造成类似现象。要区分这些解释,最直接的动作是逐字段比对,而不是只看页面外观。
可以按以下规则落地:
这套规则适合内容需要长期维护、多个栏目都可能被访问者进入的站点。若内容本身生命周期很短,且栏目之间不会互相引用,单独保存副本的成本可能更低;此时也应明确哪一份是最终版本,避免以后无法判断。
现在回到你正在处理的页面:先写下它的主地址和来源编号,再列出所有出现该内容的栏目。对每个栏目标记“引用”或“副本”。凡是副本,都问一句:它是否会被单独修改?若答案是会,就把它改成引用;若暂时不能改,就在编辑说明中写明“此副本不单独更新,以主地址为准”。完成这一步后,下一次内容变更只需从主地址开始,其他栏目按引用关系跟随。这样维护单一来源就不再是抽象原则,而是可以逐项核对的编辑动作。