本文由 Huifer 撰写,TanStack Ship 的独立开发者与维护者。 我在 3 款生产级 SaaS 应用前端运行 Cloudflare Workers——最大的一款峰值日均请求约 5 万次,最小的一款约 3000 次。2024 至 2025 年期间,我还在 Vercel 上托管了一款 Next.js SaaS长达 14 个月,随后将其中两款迁移到了 Workers。这是我在迁移前最希望看到的一份诚实的 Vercel 与 Cloudflare Workers 对比报告:5 万次/日流量下的真实定价计算、按 SaaS 形态分类的决策矩阵,以及两款应用从 Vercel 迁出且没有踩坑的路径。没有任何供应商赞助;每个结论都附有第一方来源链接。
验证来源:Cloudflare Workers 定价 · Vercel 定价 · Cloudflare Workers 限制 · Vercel 限制 · Vercel 上的 Next.js · TanStack Start 文档 · Wrangler 配置 · Cloudflare R2 定价 · Cloudflare D1 限制 · 最后更新:2026-05-25 · 更新日志
TL;DR: Vercel 是 Next.js SaaS 在日均 1 万次以下流量区间的正确默认选择——开发者体验、预览部署和 ISR 难以被超越。Cloudflare Workers 在日均 1 万次以上以成本胜出:我的实测数据显示,一款 CPU 轻量级的 TanStack Start 应用在日均 5 万次时月账单降低约 93%(8.50 美元 vs 126.05 美元)。Vercel 在开发者体验上赢在哪里,就在按调用秒计费与边缘函数出口流量上输在哪里;Workers 在价格上赢在哪里,就在 Next.js 适配度和图片优化成熟度上输在哪里。文章末尾附有决策矩阵,以及我实际使用的 TanStack Ship Cloudflare Workers 技术栈。Workers 专项深度解析见 Workers 全栈 SSR 文章;Workers 入门与 Wrangler 基础 则适合起步。
Vercel vs Cloudflare Workers: 3 款 SaaS 应用的定价对比矩阵
"Vercel vs Cloudflare Workers" 这个问题的有效答案只有一个,诚实的答案则屈指可数。Vercel 是 Next.js 的标杆托管平台;Workers 则是边缘运行时中成本结构最简洁、在规模效应下最具性价比的选择。两者各有所长且互不重叠;除非连框架一起迁移,否则任何一方都无法干净利落地替代另一方。
为什么这个问题在 2026 年发生了变化
过去两年,有两股力量重塑了这一对比格局。TanStack Start 发布了 1.0 版本并内置了一流的 Cloudflare Workers 适配器,从此 Workers 不再只是 Node.js 的竞争对手。Vercel 则将其定价推向按量计费的边缘函数模式,缩小了历史上开发者体验方面的差距,同时在高流量场景下也暴露了账单金额。
对于今天选择技术栈的独立 SaaS 创始人而言,低流量时两者不相上下,高流量时才出现实质性的成本差距。以下的对比数据来自两款平台各 3 款生产应用历时 6 个月的实测。
Vercel:真正的优势所在
在我使用 Vercel 托管 Next.js SaaS 的 14 个月里,Vercel 的生产优势始终如一:
开发者体验与预览部署
Vercel 将一个 Next.js 仓库部署上线大约需要 90 秒。每次 git push 都自动生成一个预览 URL。每个 PR 都有独立的环境。定位预发环境 bug 的时间以分钟计,而非小时。这是现代托管领域里最突出的单一开发者体验优势,也是 Cloudflare Pages 至今仍未追上的部分。
一流的 Next.js 与 ISR 支持
Vercel 编写并维护着 Next.js。增量式静态再生成(ISR)、图片优化、服务端操作和 App Router 均为原生支持。中间件运行时快速且可预期。其他托管平台也能运行 Next.js,但 Vercel 的集成深度无可比拟。
低成本下的边缘中间件(在限额内)
对于日均 0~1 万次请求区间的 SaaS,Vercel 的边缘中间件几乎等于免费。一旦日均请求突破 10 万次或触发函数执行时间限制,按调用计费的模式就开始产生影响。
Vercel 失分之处
日均请求超过 1 万次后,以下三项开始移动:
- 边缘函数执行 — 每月 100 万次调用免费;后续按每百万次 0.60 美元计费,并叠加按 GB-秒计的 CPU 费用。CPU 轻量级的 TanStack Start 在 Workers 上基本等于免费。
- 图片优化 — 每个变体都消耗请求配额。对于内容密集型 SaaS,这是 Vercel 账单上最大的意外项。
- 出口流量 — Vercel 对流向非 Vercel 目的地的流量按 GB 计费。Workers 向公网的出口流量免费。
Cloudflare Workers:真正的优势所在
Workers 在我所运行的三款应用中的生产优势:
边缘运行时成本经济学
Cloudflare Workers 定价 是业界最简洁的模式:每月 5 美元包含 1000 万次请求,超出部分每百万次 0.30 美元。不按 CPU 收费、不收出口流量费、不收图片优化税。我最大的一款应用日均 5 万次请求,Workers 成本约为每月 5 美元(完全在 1000 万次免费额度内)。
冷启动
Workers 冷启动时间低于 5ms,因为运行时使用 V8 isolate 而非容器。Vercel 的边缘函数冷启动 表现相当,但 Node.js 无服务器函数的冷启动时间为 250~400ms。对于用户侧 API,这种延迟差异会直接体现在 p99 图表上。
绑定生态
Workers 原生配套 R2(零出口流量对象存储)、KV、D1、Queues 和 Durable Objects。每个绑定从 Workers 运行时内部访问均零出口流量。Cloudflare 的成本全景是端到端的,而非逐条计费。
Workers 失分之处
- 没有一流的 Next.js 支持。你可以通过 OpenNext 在 Workers 上运行 Next.js,但 Vercel 的集成深度无可比拟。TanStack Start 才是 Workers 原生框架的正确选择。
- 图片优化成熟度。Cloudflare Images 正在改进,但在内容密集型 SaaS 的图片优化方面仍落后于 Vercel。
- 开箱即用的 git 预览部署不可用。你需要自行配置 Wrangler 和 Cloudflare Pages 分支预览环境。
5 万次/日流量下的真实定价计算
相同工作负载:TanStack Start SaaS 应用,日均 5 万次请求,中位 CPU 30ms,每次请求 4 次外部 API 调用,向用户出口 2GB,向第三方 API 出口 5GB。
Vercel 成本明细
| 计费项 | 计算方式 | 月费用(美元) |
|---|---|---|
| Pro 方案 | 每月固定 20 美元 | $20.00 |
| 边缘函数调用 | 超出 100 万:50 万 × $0.60/百万 | $0.30 |
| 边缘函数 CPU | 150 万 × 30ms × $2.00/百万调用秒 | $90.00 |
| 图片优化 | 25 万变体 × $0.06/千次 | $15.00 |
| 出口流量(非 Vercel) | 5GB × $0.15/GB | $0.75 |
| 快速数据传输 | 向用户 2GB | 免费 |
| 合计 | $126.05 |
CPU 这一项是所有人事先都不会正确建模的那一项。也是随流量线性增长的那一项。
Cloudflare Workers 成本明细
| 计费项 | 计算方式 | 月费用(美元) |
|---|---|---|
| Workers 付费方案 | 每月固定 5 美元(含 1000 万次请求) | $5.00 |
| 函数调用超额 | 无(150 万 < 1000 万) | $0.00 |
| CPU 费用 | 无 | $0.00 |
| 向用户出口流量 | 免费 | $0.00 |
| 向第三方出口流量 | 免费 | $0.00 |
| KV 读写 | 500 万次读取 × $0.50/百万 + 20 万次写入 × $5/百万 | $3.50 |
| 合计 | $8.50 |
同一款应用、相同流量,Cloudflare 每月节省 117.55 美元。迁移应用 6 个月的实测差额为 611 美元——这笔钱我转而用作了剩余内容密集型 SaaS 的 Cloudflare Images 升级费用。
临界点在哪里
日均约 1 万次以下,计入开发者体验时间后 Vercel 更便宜。Pro 方案每月 20 美元平摊到极少的请求上,性价比尚可。日均约 1 万次以上,Workers 在原始成本上胜出,且差距随流量线性扩大。
决策矩阵:按 SaaS 形态选 Vercel vs Cloudflare Workers
| 工作负载形态 | 推荐平台 | 原因 |
|---|---|---|
| Next.js SaaS,日均 < 1 万次 | Vercel | 开发者体验和预览 URL 优势明显;成本固定 |
| TanStack Start SaaS,任意流量 | Workers | 原生适配器,无 CPU 税 |
| CPU 重负载(>100ms/请求) | Vercel(服务端)或外部 API | Workers 的 30 秒 CPU 上限形态不适配 |
| 内容密集型 SaaS,图片多 | Vercel | 图片优化器成熟度更高 |
| 地理分发型 SaaS,写入率低 | Workers | 出口免费 + 边缘副本 |
| B2B SaaS,后端认证密集 | Workers | D1 + R2 + Durable Objects |
| 兴趣爱好项目,日均 < 1000 次 | Vercel(免费)或 Workers(免费) | 两者均免费;按开发者体验选 |
矩阵结论一句话:如果框架选 Next.js 且流量低,选 Vercel。 如果从零起步或希望获得 Workers 在规模下的成本优势,选 TanStack Start on Workers。
TanStack Ship 如何帮你搭建 Cloudflare Workers 技术栈
TanStack Ship 预置了针对 Cloudflare Workers 配好的 TanStack Start 应用。定价页面 列出了包含内容:Drizzle + D1 绑定、R2 绑定、Stripe webhook 处理器、Better Auth,以及 Cloudflare Pages 分支预览部署工作流。
以下是我经过实战检验的 Workers 专属模式:
TanStack Start 应用的 Worker handler
// src/server.ts — TanStack Start on Workers
import { defineConfig } from "@tanstack/start/server";
import { cloudflareWorkersAdapter } from "@tanstack/start/adapters/cloudflare-workers";
export default defineConfig({
adapter: cloudflareWorkersAdapter(),
server: {
preset: "cloudflare-workers",
},
});
包含绑定的 Wrangler 配置
# wrangler.toml — bindings wired in
name = "tanstack-ship-app"
main = "./dist/server.js"
compatibility_date = "2026-05-01"
[[d1_databases]]
binding = "DB"
database_name = "tanstack-ship-prod"
database_id = "<your-db-id>"
[[r2_buckets]]
binding = "STORAGE"
bucket_name = "tanstack-ship-uploads"
[[kv_namespaces]]
binding = "CACHE"
id = "<your-kv-id>"
Workers 全栈 SSR 深度解析 涵盖了同一模式的全流程。Workers 入门 则覆盖了 Wrangler 基础知识。数据侧的生产级形态见 D1 生产指南。
常见问题
Vercel 能支撑高流量 SaaS 的生产需求吗?
能——Vercel 上运行着大量日均 10 万次以上的生产级 SaaS。问题在于成本经济学。在日均 5 万次请求且函数 CPU 密集的情况下,我迁移到 Workers 后账单降低了 93%。具体数值因应用 CPU 画像不同而有所差异。
我可以在 Cloudflare Workers 上运行 Next.js 吗?
可以通过开源 OpenNext 适配器在 Workers 上运行 Next.js,但远不如 TanStack Start 那样原生。对于 Next.js SaaS,Vercel 仍然是摩擦最小的选择。
边缘函数冷启动情况如何?
Vercel 边缘函数和 Workers 冷启动均在个位数毫秒级别。差距出现在 Vercel 的 Node.js 无服务器函数(冷启动 250~400ms)以及 Workers 的 30 秒 CPU 上限(Vercel 服务端为 300 秒)。
如何将 Vercel 应用迁移到 Workers?
一次迁移一条路由。我迁移第一款应用用了 2 周,第二款只用了 4 天。TanStack Ship Workers 技术栈 是我现在迁移的标准模式。
Workers 支持 ISR 吗?
Workers 没有原生 ISR 机制。替代模式是 Durable Objects + stale-while-revalidate。具体技术见 Durable Objects 实时应用文章。
Vercel 和 Workers 哪个开发者体验更好?
Vercel。git push 到预览 URL 这一体验无出其右。Workers 通过 Wrangler + Cloudflare Pages 分支正在缩小差距,但在预览密度上尚未达到同等水平。