Topics

将现有网站部分改造为 CMS(Cloudflare Pages Functions + microCMS 应用笔记)

  • column

您好,我是Liberogic的CTO大冢。

要我再写点什么文章……这可真是难为我了。

因此,就“现有网站部分 CMS 化”这一主题,我打算留一份简单的技术笔记。

过去的常规做法是用 PHP 把“逻辑嵌入 HTML”,而现在借助 Cloudflare Pages 的 Functions,就能以更加简洁的方式搭建出既能被 Google 正确索引、又兼顾 SEO 的架构。

本文将介绍如何在由 Eleventy 构建的静态网站上,借助 Cloudflare Pages Functions 施加“后付式 SSR”,并集成 microCMS 的实践过程。

本次架构的要点

本次项目使用 Eleventy + Nunjucks 构建前端。与 Astro 那种将 Functions 内置于项目内部的方式不同,我们采用的是:对输出到 dist/ 的静态 HTML,之后再插入动态内容的方式。

用起来意外地顺手,很方便呢。

1. 仅在预览环境中启用 Basic 认证

需求是“预览环境中希望加入认证,但在正式环境中尽量减少不必要的 Worker 执行(成本)”。因此,我们在构建前处理中稍作调整,采用仅在正式构建时删除_middleware.js 的运营方式。

正式环境无需经过认证处理,因此在抑制多余运行成本的同时,兼顾了安全性与便利性。

2. 使用 Cache API 缓存 microCMS 的响应

采用 SSR(服务端渲染)时,难免会担心“每次请求都调用 API 所带来的负载与延迟”。

因此我们利用 Cloudflare 的 Cache API,将响应缓存在边缘节点。缓存 TTL 设置得较短,约为 5 至 10 分钟。

在保证内容新鲜度的同时,也充分确保了性能。

3. 使用 KV 进行缓存清除(revalidate)

尽管 TTL 较短,但“更新后无法立即生效”对运维方来说仍有些困扰。因此我们将 Cloudflare KV 用作 revalidate 的控制存储。

实现方式很简单。

  • 在 microCMS 中更新文章时会触发 Webhook
  • 在此时更新 KV 的值
  • 在 Pages Functions 中,以 KV 的值为触发条件,判断是否需要使缓存失效

这样一来,就实现了“平时依靠缓存实现极速访问,更新时即时生效”的两全设计。

总结

这种“保留既有静态站点的优势,仅在必要之处在边缘进行加工”的方式,运维灵活性很高,我非常喜欢。

借助 Cloudflare 的强大能力,重现过去 PHP 那种轻松上手的便利!大刀阔斧地迁移框架固然不错,但这种“脚踏实地的改进”,其实在一线工作中最为实用。

那就先到这里。

撰写本文的人

Liberogic技术部门的中坚力量。每当听到“要是有这样的东西就好了,要是能有就方便了”这样的想法,便凭借与生俱来的智慧加以延伸,转眼间就将其实现。沟通能力出众,深受客户喜爱,是本公司的宝贝,同时也是十足的爱猫人士。

大塚 翔

董事 CTO / 首席工程师 / 合同会社猫穴 代表 / 外表不必要地显年轻

查看此员工的文章

以稳健的团队体制和迅速的应对能力为傲

Liberogic 的资深团队积极推动项目,因此深受客户好评。
我们致力于合理配置项目经理与总监,确保整个项目顺利推进。 我们采用按需投入的方式,避免不必要的全员投入导致成本增加,合理分配资源、人尽其才。同时,我们在掌握业务内容、制作与提交报价方面的速度也广受好评。

※ 当社不积极开展 SES 类驻场业务,敬请谅解。

您可以使用 Slack、Teams、Redmine、Backlog、Asana、Jira、Notion、Google Workspace、Zoom、Webex 等几乎所有主流的项目管理工具和聊天工具。

在利用 SES 或离岸外包的大型项目中,您是否正在为技术难题或推进方式而烦恼?

案例分析