跳到正文
WC.

告别 Netlify

•1 分钟阅读•基础设施•
•
#netlify#cloudflare#hosting#infrastructure

我用 Netlify 用了好几年。它是第一个让部署静态站几乎零负担的平台——git push、等三十秒、完事。很长时间里这就够了。

对比碎片化平台原语和统一 Cloudflare edge runtime 的架构图。

后来不够了。

千刀万剐

Netlify 没有崩盘,是一点点被侵蚀。免费档限制悄悄变严,build 分钟数从可以忽略变成要盯着看,定价开始围着团队和企业转,单人开发体验——当年让 Netlify 成为 Netlify 的东西——变成了次要。

但推我走的不是价格,是平台方向。

Netlify 不断加我没要的功能:像是硬塞上去的 edge functions、我从来没遇到过的图数据库层、Blobstore、identity、forms——每个都是半集成的原语,各自一套心智模型、文档坑和坑点。

平台变成了功能自助餐,没有一道菜像一个厨房做出来的。

一致性问题

我想要的很简单:快速部署静态文件、需要时跑个 serverless 函数、偶尔存点数据。三种原语。Netlify 技术上都有——但像三个产品用同一个 dashboard 缝在一起。

Netlify Functions 底层跑在 AWS Lambda,Edge Functions 跑在 Deno Deploy,CDN 是 Netlify 自己的,blob 又是另一层抽象。每层冷启动特性、体积限制、调试故事都不一样。

我花在「该用 Netlify 的哪个原语」上的时间比写功能还多。这是设计坏味道:托管平台要你先做架构调研才能写一个 handler,抽象就失败了。

Cloudflare 让什么变明显

迁到 Cloudflare 不是平迁,是简化。

Workers、KV、Pages、R2 都在同一张网上、同一套部署模型、同一个运行时。写一个 Pages Function 就是 Worker;往 KV 存数据,同一个 Worker 就能读。原语之间没有阻抗不匹配,因为它们本来就是一个系统设计出来的,不是收购和合作拼出来的。

部署这个站时差别特别直观。在 Netlify:推分支、等 build、盼着 edge function 配置没错、再检查 redirect 规则解析顺序。在 Cloudflare Pages:push 就上线——全球、在我已经拿来管 DNS 的那张网上。

没有 build 分钟焦虑,没有 edge function 冷启动抽奖,没有「生产里和 preview 里行为不一样的」redirect 规则语言。

厂商锁定的另一面

常识说换平台有 vendor lock-in 风险。但我早就被 Netlify 锁定了——它的 redirect 语法、函数路由约定、部署配置格式。每个平台都有锁定,区别是你被锁在好架构里还是方便里。

Cloudflare 的锁定是 V8 isolate 模型和 Workers API,比 Netlify 提供的任何东西都更接近 Web 标准。如果 Cloudflare 明天消失,我的 Workers 要重写,但心智模型——edge 优先、静态优先、serverless——可以带到别处。Netlify 的锁定在管道细节里,没教会我任何可迁移的东西。

难说出口的那句

离开 Netlify 最难的是承认:我长大了,它不够用了。当我只想要「静态托管 + 顺手的 CI」时,Netlify 真的很好。一旦我希望托管变成应用平台——跑计算、存数据、在 edge 处理表单——接缝就露出来了。

我不觉得 Netlify 差。我觉得它为一个和我后来不一样的那类开发者优化了。它想做友好的入口;我想要一个能建很多年、不用再撞一次天花板再迁一次的地基。

Cloudflare 是那个地基。不是因为它完美,而是它的架构和我的指向同一个方向。

继续阅读

为什么我选择在 Cloudflare 上构建

每个项目都从同一个不起眼的决定开始:这东西到底跑在哪? 多数开发者把托管当成一个勾选项。选默认、部署、继续。我以前也一样。但做得越久越清楚:托管平台不只是基础设施,它是架构约束,会塑造后面每一个决定。 这个站和我要发的东西,我都选了 Cloudflare。不是因为跟风,而是因为它和「软件该怎么工作」的想法一致。…

•1 分钟阅读•基础设施
cloudflarehostinginfrastructure
用 Resend 和 Cloudflare 从静态站发 newsletter

静态站不会在有人打开页面时跑代码,这正是目的。但 newsletter 需要动态:接收订阅、发确认邮件、处理点击、把联系人加进列表、发欢迎信。那怎么既保持站点静态,又完整掌控整个流程? 我的做法是:用 Resend 发信,用 Cloudflare Pages Functions 提供那一小块 API。HTML…

•1 分钟阅读•基础设施
newsletterresendcloudflare
静态站邮件的摩擦

给静态站加邮件本该是已解决的问题。 我只需要:收联系表单提交、用自己域名发回复。听起来简单,但现代邮件服务商生态感觉非常碎片化。 一开始试了 MailChannels,号称在反垃圾上比别家强。但物理规律不变——文档差、开发体验到处是摩擦,理论优势就没意义。我花在折腾配置上的时间比写代码还多。 Formspree…

•1 分钟阅读•基础设施
infrastructuremailgunstatic-sites
把 GitHub 当后端

你可以跑一个带评论和动态的静态站,而不跑数据库也不跑 API。做法就是把 GitHub 当成你从不用运维的后端。 身份、存储、动态通常意味着鉴权、数据库和某种实时更新。对个人站或小项目来说,零件太多了。 我希望读者能评论,也希望展示近期工作——又不想再起一个服务或为评论 SaaS…

•1 分钟阅读•基础设施
githubgiscusstatic-sites