过去二十年间,内容管理系统(CMS)的核心假设几乎未曾动摇:一个数据库驱动的后端,加上渲染 HTML 的模板层,便构成了网站的全部。然而过去十八个月,这个假设正在被加速瓦解。Hacker News 上近期一篇题为「The CMS is dead, long live the CMS」的讨论收到了超过七十条评论,触及的正是这场架构变革的核心:传统 CMS 与基于 Git 和 Markdown 的工作流之间,并非简单的技术选型差异,而是内容建模哲学与发布流程的根本分叉。

从「一个系统」到「可组合架构」

理解这场变革的起点,是认清传统 CMS 承担了过多职责。WordPress、Drupal、Sitefinity 这类 monolithic 系统集成了内容存储、权限管理、渲染引擎、插件生态乃至 CDN 缓存策略于一身。二十年积累的复杂度使得任何一次核心升级都成为一次风险赌博。一位在 HN 评论中自称为「二十年 WordPress 从业者」的开发者指出,当你的站点运行了十年以上,插件依赖、安全补丁、PHP 版本迁移每一项都可能成为悬在头顶的达摩克利斯之剑。

Headless CMS 正是针对这一问题的解法:将内容「后端」完全抽象为 API 服务,前端则获得完全的技术栈自由。Contentful、Sanity、Strapi、Directus 这些平台将内容建模为结构化数据,通过 RESTful 或 GraphQL 接口向下游任意消费端暴露。关键变化在于:内容不再是「渲染好的 HTML」,而是可以被任何前端框架 ——Next.js、Astro、Svelte—— 按需组合的原始素材。这种分离带来了前端性能的显著提升,因为最终页面可以在 CDN 边缘节点预渲染或按需流式传输,而不必依赖一个集中式 PHP 进程。

然而,headless CMS 并未消除复杂性,而是将复杂性转移到了另一个层面。当你的团队需要处理多语言内容、本地化工作流、复杂的内容关联( 例如一篇文章对应多个作者、多个标签、多个版本的草稿),一个纯 API 驱动的系统可能迅速变得比传统 CMS 更加难以驾驭。更关键的是,headless CMS 本质上仍然是「数据库 + 管理员面板」的变体,只是把呈现层剥离了而已。真正的范式转移发生在那些连数据库也不要的系统上 —— 也就是 Git 和 Markdown 的世界。

Git 工作流的工程逻辑

Git 作为内容存储层的理念并不新鲜,但过去十二个月,它的工程化成熟度发生了质的飞跃。将内容以纯文本 Markdown 形式存储在 Git 仓库中,意味着内容本身获得了版本控制、分支并行、代码审查流程的全部能力。每一次内容修改都对应一次 commit,变更历史精确可追溯,回滚操作精确到单个段落。这对于需要多人协作、频繁迭代的团队而言是不可替代的优势。

更深层的改变在于 CI/CD 流水线与内容发布流程的融合。当内容本身成为代码仓库的一部分,每一次 commit 都可以触发自动构建。GitHub Actions、GitLab CI 或 Cloudflare Pages 的构建管线可以执行内容校验(检查链接有效性、Markdown 语法、字数阈值)、SEO 元数据验证、图片优化处理,最终将产物部署到全球 CDN。整个发布流程从「点击发布按钮」的即时操作,转变为「合并 PR」的声明式动作。后者天然支持审批工作流 —— 内容需要经过团队成员 review 才能合并到主分支,这与传统 CMS 的「草稿 - 待审 - 发布」状态机在逻辑上等价,但实现方式对开发者更加友好。

这种工作流尤其适合技术团队内部的内容系统。开发团队日常使用 Git 和代码审查工具,将内容纳入同一套流程几乎不需要额外学习成本。更进一步,AI 代码助手现在可以直接在 Markdown 文件上操作 —— 修改措辞、调整结构、生成摘要 —— 就像修改代码一样自然。事实上,Simon Willison 在 HN 评论中提到,他已经开始使用 AI 工具来批量处理博客内容的备份和迁移,因为「内容即代码」使得这类操作可以完全自动化。

但必须正视 Git 工作流的真实边界。HN 讨论中一条被广泛赞同的评论指出了核心问题:当站点需要支持多人同时编辑、处理权限分级(编辑、审核、发布者的不同层级权限)、实现定时发布和版本回滚时,纯文件系统的方案需要大量自定义工程。ProcessWire 和 KirbyCMS 的使用者(包括 HN 上多位开发者)提到,这些系统之所以存活至今,正是因为它们在「足够简单」和「满足企业级需求」之间找到了平衡点 —— 不需要 WordPress 级别的插件生态,但也不至于像纯静态站点那样简陋。

内容建模的深层重构

无论选择哪种路径,内容建模都是绕不过去的核心工程问题。传统 CMS 倾向于「页面即单元」的组织方式,每篇博客文章、每个产品页面都是一条数据库记录,字段预先定义好。这种方式的局限在于:当产品形态变化时,数据库 schema 的迁移成本极高。Headless CMS 引入的内容类型(Content Type)概念在一定程度上缓解了这个问题 —— 你可以为不同业务场景定义不同的内容模型,它们共享底层的存储层但各自拥有独立的字段结构。

Git 工作流中的内容建模则走向了另一个极端:Markdown 文件的前置元数据(Frontmatter)成为天然的模型定义载体。例如,一篇活动报道可能包含日期、地点、报名链接、演讲者列表等信息,这些以 YAML 或 JSON 格式嵌入在文件头部,与正文共存于同一版本历史中。这种「内容与模型共生」的方式在小团队中效率极高,但当内容规模达到数百条且字段类型日益复杂时,维护成本会急剧攀升 —— 你需要为每种内容类型编写独立的构建逻辑和展示组件,而没有 CMS 那样统一的管理界面。

这正是为什么越来越多的团队开始采用「双轨制」:结构化程度高的内容(例如产品目录、事件日历)使用 headless CMS 管理,而文字为主的博客、文档、新闻稿则迁移到 Git + Markdown 体系。两种数据源通过统一的 API 网关或聚合层对外提供服务,前端根据内容类型自动选择数据来源。这种混合架构正在成为中大型项目的标准配置,它承认了「一刀切的 CMS 无法满足所有内容需求」这一现实。

API 设计与发布流程的工程权衡

在架构决策中,API 设计往往是区分方案优劣的关键维度。Headless CMS 的核心价值在于提供了一个经过精心设计的 API 层,开发者无需关心内容如何存储、索引和检索,只需调用统一的接口获取 JSON 或 GraphQL 响应。Sanity 的 GROQ 查询语言、Contentful 的链接系统、Directus 的即席 SQL 查询能力,都是为了让内容消费端尽可能简洁。这部分复杂性被封装在平台内部,代价是你需要接受平台方的接口设计和定价模型。

Git 工作流则将 API 层完全留给自己构建。你可以用 Next.js 的 API 路由读取 Markdown 文件并动态生成 JSON 响应,也可以利用 Astro 的内容集合(Content Collections)功能直接在构建时处理所有内容并输出为静态文件。后者的优势是性能极致 —— 页面在构建阶段已经完全生成,CDN 直接服务,无需任何服务端计算;劣势是构建时间随内容增长线性增加,当内容库超过数千条时,每次全量构建可能耗时数分钟到数十分钟不等。增量构建和远程缓存(Remote Cache)是缓解这一问题的工程手段,但它们增加了构建系统的复杂度,需要团队具备相应的运维能力。

发布流程的另一个核心差异在于回滚机制。传统 CMS 的回滚通常是「将内容记录恢复至某个历史版本」,操作粒度在单条记录级别。Git 工作流的回滚则是「将整个仓库回退到某个 commit」,操作粒度在全局 —— 这意味着你可以精确恢复到任何时间点的完整站点状态,包括所有内容的精确版本组合。对于需要严格合规性(例如金融、法律行业的文档管理)的场景,这种精确性是不可替代的。

何时选择何种方案:决策框架

HN 讨论中最有价值的回应来自一位企业级开发者的总结:「使用正确的工具,而不是追逐最新的潮流。」这句话看似老生常谈,但在 CMS 选型这个充满营销噪音的领域,它比任何技术对比表都更有指导意义。

当你处于以下情境时,headless CMS 方案通常更具合理性:团队规模超过十人且包含非技术成员(编辑、市场、运营),他们需要独立的创作界面而非命令行或代码编辑器;内容类型高度结构化且频繁变化,例如电商产品目录、多语言本地化内容;项目需要与多个下游系统(移动端 APP、数字 signage、邮件营销系统)共享同一内容源;团队已经具备成熟的 JavaScript/TypeScript 开发能力。

而 Git + Markdown 工作流在以下情境中优势明显:技术团队主导内容生产(例如技术博客、开发者文档、开源项目站点);发布频率高但内容相对简单(公告、更新日志、单一语言的静态页面);需要严格的版本控制和代码审查流程;成本控制和 vendor lock-in 是核心考量 —— 纯静态部署在 Cloudflare Pages 或 Vercel 上的边际成本趋近于零。

至于 AI 在其中的角色,它正在模糊两种路径的边界。AI 工具使得非技术用户也能通过自然语言指令操作 Git 仓库中的 Markdown 文件 —— 修改内容、调整格式、生成新页面。这在某种程度上解决了 Git 工作流的「非技术用户门槛」问题。但 HN 上的一条尖锐评论指出:「你让 AI 帮你改店里的营业时间,本质上是把钥匙交给一个聊天机器人,然后祈祷它按你的意图正确执行。」这种信任风险在 mission-critical 的业务场景中不可忽视。

资料来源

本文核心观点引自 Hacker News 讨论「The CMS is dead, long live the CMS」(2026 年 4 月)及配套原文 jazzsequence.com 文章,文中多个技术细节参考 HN 社区开发者的一线实践经验。