结论先说:只要这些栏目共享同一套模板和同一份数据记录,就应该让内容只存一次、由栏目关系决定它出现在哪里;一旦某个栏目需要独立排序、独立权限或独立生命周期,继续强推单一来源反而会让维护更贵。判断标准不是“能不能复用”,而是“复用后谁有权改、改动何时生效”。
很多团队把单一来源理解成“只写一次正文”,于是把标题、摘要、封面图也一并塞进一个字段,结果不同栏目要展示不同摘要时只能复制整篇。更稳的做法是把内容拆成两层:主记录保存正文、作者、发布时间等稳定字段;栏目呈现保存该栏目专用的标题、排序权重、是否置顶。主记录只有一条,呈现记录可以有多条,每条都指向同一个主记录。
这样做的直接好处是:改正文只改一处,所有栏目同步;改某栏目的摘要不会波及其他栏目。假设某站有“行业资讯”和“政策解读”两个栏目,同一份解读同时进入两处,主记录里的正文更新后两个栏目都变,但“政策解读”栏目单独写的导读保持不变。这个假设说明的是字段归属,不是任何具体系统的现成功能。
如果某个栏目对内容有独立的审核、下架或过期规则,单一来源就会变成冲突源。例如“招聘”栏目要求职位过期后自动隐藏,而“公司动态”栏目希望同一篇内容长期保留作为记录。此时若强行共用一条状态字段,要么招聘过期把动态也隐藏,要么动态保留让过期职位继续露出。
遇到这种情况,正确动作不是继续合并,而是把“是否展示”从主记录里拿出来,放到栏目关系上。主记录只回答“这篇内容是否存在、正文是什么”,栏目关系回答“在这个栏目里是否可见、何时可见”。反过来,如果两个栏目的可见规则始终一致,就不必拆,拆了只会增加同步负担。
不要凭感觉决定,先看三个信号:
三个信号里有两个指向“不同”,就按栏目关系拆开;三个都指向“相同”,就维持单一主记录加共享关系。这个判断不依赖具体框架,换系统也成立。
下一步动作很具体:列出内容涉及的全部字段,逐个标注它属于主记录还是栏目关系。标注完成后再动数据库或内容模型,不要一边改一边想。改完之后验证两件事:改主记录正文,检查所有引用它的栏目是否都更新;改某个栏目的排序或可见状态,检查其他栏目是否不受影响。两项都符合预期,说明单一来源成立;只符合一项,说明还有字段放错了层。
需要提醒的是,抓取量或请求量的变化不能单独证明结构改对了,缓存、模板调整、抓取节奏变化都可能造成类似现象。判断依据应回到字段归属和实际展示结果,而不是某个统计数字的升降。把字段归属表留档,后续新增栏目时直接对照,比每次重新讨论更省事。