单一来源不是让同一篇内容只能出现在一个栏目,而是让内容的正文、标题、摘要、发布时间等核心字段只在一个地方被编辑,其他栏目通过引用、聚合或关联的方式展示它。如果每个栏目都保存一份可独立编辑的副本,后续修改就会分叉,读者在不同入口看到互相矛盾的版本。解决这个问题的关键,是先把“展示位置”和“内容存储位置”分开,再决定哪些栏目允许复制、哪些只能引用。
同一内容进入多个栏目后出现不一致,通常有两种解释。
第一种是展示层重复:内容只有一份,多个栏目通过标签、关联字段或聚合规则把它调取出来。这种情况下,修改原文后各入口会同步变化,问题往往出在缓存或栏目排序上。
第二种是存储层重复:编辑在 A 栏目发布一次,又在 B 栏目手动复制粘贴一次,两份内容各自独立。此后任何一次修改都只作用于其中一份,时间一长必然分叉。
区分两者的证据很直接:修改原文标题中的一个词,然后观察其他栏目入口是否同步变化。如果所有入口都变,说明是展示层重复;如果只有当前栏目变,说明存在独立副本。这个动作不需要改动线上正式内容,可以先用一篇草稿或测试内容完成。测试结果会直接决定下一步:展示层重复去查缓存和调取规则,存储层重复则要处理数据模型。
确认存在存储层重复后,常见的做法是选定一个栏目作为主记录位置,其他栏目只保存指向主记录的标识,而不是保存正文副本。具体可以按下面的顺序处理:
这里有一个容易遗漏的条件:如果多个栏目对同一内容有不同的展示需求,比如一个栏目要显示长摘要、另一个只显示标题,差异应该放在展示模板或附加字段里,而不是复制正文。把展示差异写进正文副本,是后续分叉最常见的起点。
假设一个六安本地服务类网站,有“行业资讯”和“常见问题”两个栏目,同一篇关于办理流程的说明需要同时出现在两边。
做法一:两个栏目各存一份。编辑在资讯栏目更新了办理材料清单,但忘记同步常见问题栏目,读者从两个入口看到不同材料要求。这种做法的维护成本随栏目数量增加而上升。
做法二:内容只存在资讯栏目,常见问题栏目通过关联字段调取标题和摘要,点击后进入同一详情页。编辑只需改一次,两个入口同步更新。代价是常见问题栏目无法单独调整正文措辞,如果确实需要不同措辞,就得接受两份内容并建立同步检查机制。
两种做法都成立,区别在于是否需要针对不同栏目使用不同正文。不需要,就选引用;需要,就要为重复副本安排定期比对的动作,而不是假设它们会一直一致。
改完数据关系并不等于问题结束,还需要观察几个可验证的信号:
出现这些信号时,先回到主记录位置检查是否被绕过。如果后台发布流程本身允许编辑直接在其他栏目新建内容,那么即使数据模型已经改好,重复仍会重新产生。这时需要调整的是发布入口和编辑规范,而不只是清理已有数据。
单一来源的目标是减少同一事实的多处编辑,不是把所有栏目合并成一个。导航、专题聚合、推荐位本身就应该引用主记录,而不是各自保存副本。真正需要保留独立正文的情况通常只有两类:内容确实针对不同读者重写过,或者不同栏目需要完全不同的合规表述。除此之外,优先选择引用。
判断标准可以简化为一句话:如果两处内容未来需要分别修改,就保留两份并安排比对;如果永远应该一起变化,就只留一份,其余引用。按这个标准处理完栏目关系后,再检查发布流程是否允许绕过主记录,才能让单一来源在后续更新中继续成立。