部署平台这道题最容易被问成“你站哪一边”,但真正决定成本的不是品牌,而是你的站点到底需要哪一种运行时。
先别按平台站队,先按运行时需求分层
按 2026 年 4 月我复核的官方文档,这三条路解决的并不是同一个问题:
- Vercel 面向完整的 Next.js 运行时能力。
- Cloudflare Pages / Workers 路线 更像你主动选择 Cloudflare 网络与边缘运行时之后,再决定要不要承接更完整的 Next.js 能力。
- 静态部署 则是你先接受“构建时算完、上线后只发静态文件”的边界,再去换取最低基础设施复杂度。
如果一开始不把这三种运行时拆开,你就会把“部署平台选择”误做成价格或情绪问题。实际上,最该先回答的是:你的应用有没有真正依赖服务端动态能力。
如果你需要完整 Next.js 运行时,Vercel 通常是摩擦最小的一条路
Vercel 的 Next.js 官方文档对这一点表达得很直接:它把 ISR、SSR、Streaming、Image Optimization 这些能力都当成平台内的正常工作流来支持。比如文档里明确写到,SSR 通过 Vercel Functions 承接,ISR 的生成页会被缓存并持久化,Streaming 也有对应的函数与路由支持。
所以如果你的站点有这些需求:
- 登录态或请求态决定页面输出
- 需要 ISR 或较细粒度的缓存/重验证
- 依赖流式响应、Route Handlers、图片优化
- 不想自己额外承接适配层和平台差异
那 Vercel 往往是最省心的默认解。它的优势不是“更高级”,而是很多 Next.js 默认假设在这里更少需要你额外解释。
适合它的典型情况是:你想把精力放在产品、页面和数据流,而不是先研究运行时兼容表。
如果你就是要走 Cloudflare,先分清你选的是 Pages 静态层,还是 Workers / OpenNext 全栈层
Cloudflare 官方 Pages 文档本身已经给了一个很清楚的分流:如果要部署全栈 SSR 的 Next.js 应用,它让你去看 Next.js Workers guide;如果要部署静态 Next.js 站点,则走 Pages 的静态路径。也就是说,“Cloudflare Pages”本身并不自动等于“完整 Next.js 运行时”。
而 OpenNext 的 Cloudflare 文档又说明了另一件事:如果你真想在 Cloudflare 这条线上承接更多 Next.js 特性,你实际上是在选择一层适配与运行时工程,包括 bindings、caching、static assets 等额外关注点。
这条路成立的场景通常是:
- 你已经明确想吃到 Cloudflare 的网络与边缘环境能力。
- 你愿意接受更多平台适配判断,而不是只追求默认最省事。
- 你的团队能维护“Next.js 能力 × Cloudflare 运行时”之间的边界。
换句话说,Cloudflare 路线不是不能做全栈,而是更适合把平台当成主动工程选择的人,而不是只想“先把站发上去”的团队。
如果站点真的能静态导出,静态部署通常是复杂度最低的一档
Next.js 的静态导出文档写得很明白:静态导出可以部署到任何能提供 HTML/CSS/JS 静态文件的 Web 服务器,但很多需要 Node.js 服务器或运行时动态逻辑的能力都不支持。
官方列出的不支持项包括:
- 依赖
Request的 Route Handlers cookiesrewrites/redirects/headersproxy- ISR
- 默认图片优化
draft modeserver actions
这意味着静态部署最适合的是:
- 内容型站点或资源型站点;
- 大多数页面可在构建时决定;
- 你愿意用“预先生成 + 少量客户端增强”来换低运维;
- 你没有把请求态逻辑、身份态逻辑塞进主路径。
如果你的产品本来就是内容主导,静态部署往往不是“简陋版”,而是最诚实的运行时边界。
一个更实用的判断顺序
如果你让我只留一套选择顺序,我会这样判断:
第一问:有没有必须依赖服务端请求态的页面
如果有,比如鉴权、个性化、实时 SSR、依请求返回不同结果,那就先别看纯静态。
第二问:要不要主动吃 Cloudflare 路线的适配成本
如果你明确要 Cloudflare 的网络与边缘能力,并且愿意接受平台适配,那走 Cloudflare + Workers / OpenNext 是主动选择;如果不是,就不要为了“感觉更先进”硬选这条路。
第三问:是不是内容站、资源站、营销站为主
如果是,而且运行时动态需求很少,静态导出通常比你想象中更够用,也更容易长期稳定。
第四问:团队最稀缺的是哪种注意力
- 稀缺的是产品迭代注意力:优先低摩擦平台。
- 稀缺的是平台控制权:可接受更强适配路线。
- 稀缺的是运维预算与复杂度余量:优先静态边界。
这不是“谁更好”,而是哪条边界更像你当前的系统
很多部署返工,并不是平台不行,而是系统边界没想清楚。你明明需要 SSR,却选了静态;你其实只要静态,却先接了一整套全栈运行时;你只是想用 Cloudflare CDN,却一脚踏进完整适配工程。
我现在更愿意把这道题看成“运行时诚实度”测试:哪个选项最接近你的真实需求,而不是你对未来功能的想象。
部署决策一旦按这个顺序做,很多争论会自动消失。因为你不再是在比较品牌,而是在比较你愿不愿意承担那条能力边界后面的长期成本。