在我了解到 Cloudflare 的优先事项发生变化后,这个网站的部署过程开始回溯。
在过去四年的大部分时间里,这个网站都运行在Cloudflare Pages (CFP) 上,最初在Cloudflare Workers (CFW) 上以“Workers 网站”的形式运行,之前它在其他几个网站托管商上都运行过。我清楚地感觉到,CFP 是 Cloudflare 在静态网站托管方面打算走的路线。
今天早上,我不仅发现情况不再如此,还发现自己“错过了关于此事的备忘录”,而且是很久以前的事了。经过几个小时的文档阅读和修改,我终于把网站迁移回了 Cloudflare Worker 上运行。(Cloudflare 不再称它们为“Workers 网站”了。)
埋藏的线索
每天早上,我的一个习惯就是浏览Hugo Discourse 论坛,看看 Hugo-ville 里发生了什么。今天的访问让我对 Cloudflare 最近的变更及其对 Hugo 用户在其上托管服务的影响有了初步的了解。大约两个月前,Cloudflare 发布了一篇博客文章,主要介绍了 CFW 的增强功能。我看过这篇帖子——Cloudflare 博客是我通过 RSS 关注的众多博客之一——但显然我没有向下滚动到足够远的地方去发现我现在认为是隐藏的要点,至少对于像我这样的 CFP 用户来说是这样:
既然 Workers 同时支持静态资源和服务端渲染,您应该从 Workers 开始。Cloudflare Pages 将继续获得支持,但未来我们所有的投资、优化和功能开发都将致力于改进 Workers。我们的目标是根据您对 Pages 的反馈以及我们可以改进的地方,将 Workers 打造成构建全栈应用的最佳平台。 [重点是 Cloudflare 的。]
简而言之:CFP 平台现在基本上处于维护模式,而其母平台 CFW 是 Cloudflare 未来开发工作投入的地方。
我感到懊恼,但也明白了其中的意思。尽管后来有人在 Cloudflare Discord 上告诉我,目前或许可以维持现状,但这个人也表示,将网站迁移到 CFW 仍然是最明智的选择。正如我后来在 Discord 上提到的那样:
我知道 CF表示现有的 Pages 项目没有问题,但 CF 敦促人们从 Workers 项目过渡到 Pages 项目才不久,现在情况似乎正好相反……并不急于[迁移] ,但宁愿跟随 CF 潮流,也不愿停留在仅维护的平台上。
从 CFP 回到 CFW
这意味着我必须做出一些改变。俗话说,有好消息也有坏消息。
坏消息是:Hugo 不在推荐框架之列。事实上,目前列表中的所有框架都是基于 JavaScript 的,因此有人可能会悲观地认为 Hugo 会在一段时间内被排除在外。另外:虽然Cloudflare 确实有关于从 CFP 迁移到 CFW 的文档,但后续操作并非易事。
好消息是:Hugo 的Joe Mooring非常乐于助人,他创建了一个示例仓库,展示了如何做到这一点,甚至包括自定义构建脚本和必要的配置文件。因此,我根据我的网站需求调整了这些仓库,创建了一个新的 CFW 项目来处理我网站的内容,并进行了常规的 DNS 站点交换操作,将我的域名指向那个 Worker 项目,而不是 CFP 项目。
最初拖慢迁移进程的一个原因是,网站目前使用Pages Function来管理我的内容安全策略和静态资源的缓存。这会带来问题,因为 Pages Function 实际上是Worker,所以你不能直接将其原封不动地迁移到另一个 Worker 中,并期望获得良好的结果。幸运的是,Cloudflare 的wrangler
实用程序(用于处理 CFW 和 CFP 的大量工作)可以将 Pages Function 代码编译成一个文件,该文件可以在正确配置的Worker 中运行。
对我来说唯一剩下的棘手的事情是,自 2023 年 10 月以来,我一直在本地进行 Hugo 构建,然后将结果直接部署到 CFP ,我发现这比通常将更改推送到链接的在线存储库,然后等待云基础架构构建和部署站点的方法要快得多。此外,我的方法是让我将更改推送到在线存储库,而不必在线重建,这是一种更舒适的版本控制管理方式。因此,我最终做了更多的本地重组,但通过 (1.) 断开在线存储库与 CFW 项目的连接,以及 (2.) 更改我的本地脚本以部署到 CFW 项目而不是像以前一样部署到 CFP 项目,使它能够正常工作。
它仍然没有坏
在今天所有这些繁琐的程序中,我确实认真考虑过,我是否最好还是回到我以前使用过的主机之一,而不是希望 Cloudflare 不会让我托管我的小网站变得更加复杂(当然,我每个月支付的费用为零)。
最终,我坚持使用 Cloudflare,原因很简单:尽管有些烦人,但很快我就发现,其他任何替代方案都比不上。此外,无论选择哪个主机,我都得处理各种问题。这不完全是“如果它没坏……”的情况——毕竟,作为一个 CFP 网站,我一开始就假设它没“坏”,但最后却发现并非如此——但也差不多了。