2801 字
14 分钟
Cloudflare Workers 与 Pages:通俗讲解、相同点/不同点、免费套餐与优缺点对比
1. 先用一句话区分:Workers 是“在边缘跑代码”,Pages 是“把网站发布出去”
很多人第一次看 Cloudflare 的产品会有点懵:Workers、Pages、R2、KV、D1、Queues……到底该用哪个?

先记住一个最直观的类比:
- Workers 更像是“在 Cloudflare 全球节点上运行的一段程序”。你写的是 服务端逻辑,比如 API、鉴权、转发、数据处理、A/B 测试、动态渲染等。
- Pages 更像是“把一个前端项目一键部署成网站”。它擅长 静态站点(HTML/CSS/JS)以及一些框架的 SSR/边缘函数能力(通过 Pages Functions)。
如果你不想记概念,也可以这样想:
- 你要做“后端”:倾向 Workers。
- 你要做“网站上线”:倾向 Pages。
当然,二者能组合使用,甚至在很多项目里会“前端用 Pages,后端用 Workers”。
2. 两者共同点:为什么它们经常被放在一起讨论?
Workers 和 Pages 之所以经常一起出现,是因为它们有一大块共同的基础能力:
- 都运行在 Cloudflare 的全球边缘网络
- 也就是说,不是部署在某一台固定的服务器,而是尽可能靠近访问者。
- 结果通常是:访问更快、延迟更低、跨地域体验更一致。
- 都天然接入 Cloudflare 的安全与网络能力
- DDoS 防护、WAF(如果你开通)、Bot 管理、TLS 证书、CDN 缓存等。
- 你不需要自己再配 Nginx、再买证书、再弄一堆安全策略。
- 都可以绑定自己的域名
- 例如
api.example.com给 Workers。 www.example.com给 Pages。
- 例如
- 都可以和 Cloudflare 的存储/数据库能力配套
- 比如 KV、D1、R2、Durable Objects、Queues。
- 在真实项目里,往往不是“只用 Workers 或只用 Pages”,而是“网站 + 数据 + 逻辑”组合。
- 都支持 Git 驱动的开发方式(尤其是 Pages)
- Pages 基本就是“连接 GitHub/GitLab,push 即部署”。
- Workers 也可以用
wrangler配合 GitHub Actions 做持续部署。
3. 核心不同点:它们的“产品定位”不一样
下面用更“落地”的维度讲不同点。
3.1 你部署的东西不同
- Workers:部署的是代码(服务端程序)
- 你发布的是一个 worker 脚本。
- 它接收请求(HTTP)、处理逻辑、返回响应。
- Pages:部署的是网站产物(静态资源)
- 你发布的是构建后的文件,例如
index.html、assets/xxx.js、style.css。 - Pages 会把这些文件分发到边缘节点,像 CDN 一样给用户就近返回。
- 你发布的是构建后的文件,例如
3.2 “动态能力”的来源不同
- Workers 的动态能力:天生就是写代码处理请求。
- Pages 的动态能力:主要来自 Pages Functions。
- 你可以在 Pages 项目里写一些函数,处理
/api/*或者某些路由。 - 但它的定位仍然是“网站为主,函数为辅”。
- 你可以在 Pages 项目里写一些函数,处理
3.3 典型使用场景不同
- Workers 更适合
- API 网关:统一鉴权、限流、日志、灰度。
- BFF(给前端服务的后端):把多个后端接口聚合成一个接口。
- 轻量后端:表单提交、邮件通知、Webhook 处理。
- 边缘计算:图像处理、文本处理、内容改写。
- 反向代理与请求改写:把请求转发到第三方服务,并做签名、注入 header。
- Pages 更适合
- 企业官网、产品落地页。
- 文档站(Docusaurus、VitePress、Next.js 导出静态等)。
- 博客(Hugo、Hexo、Astro)。
- 单页应用(React/Vue/Svelte)部署。
- 需要预览环境的前端项目(每个 PR 自动生成预览链接)。
3.4 开发体验不同
- Pages 的体验更像“托管平台”
- 连接 Git 仓库。
- 自动构建与部署。
- 有 Preview 环境(PR 预览)。
- 适合前端团队的工作流。
- Workers 的体验更像“云函数/Serverless”
- 用
wrangler初始化、开发、发布。 - 更关注路由、请求处理、绑定环境变量、访问 KV/D1/R2。
- 适合后端/全栈的工作流。
- 用
4. 用一个“开奶茶店”的例子解释:什么时候用 Workers,什么时候用 Pages?

假设你开了一家奶茶店,要做一个线上系统:
- 你需要一个官网,展示菜单、门店地址、活动海报。
- 你还需要一个下单接口,用户提交订单、支付回调、查询订单状态。
这时候:
- Pages = 门店的展示橱窗
- 菜单图片、活动页面、介绍文案。
- 大部分内容不会每秒变化,静态托管非常合适。
- Workers = 店员和收银系统
- 接收下单请求。
- 校验优惠券。
- 调用支付平台。
- 把订单写入数据库。
你当然也可以只用 Workers 来输出网页(Workers 也能返回 HTML),但那更像“让店员去手工摆橱窗”,可以做但不划算。
反过来,你也可以用 Pages Functions 做一部分动态 API,但如果业务逻辑越来越复杂,最后仍然会更像在写一个后端,那就会自然迁移到 Workers 里。
5. Cloudflare 免费套餐能做什么?(以“能不能起步”为视角)
Cloudflare 的免费套餐对于个人开发者、小团队原型、学习项目来说非常友好。可以把它理解成:
- 足够你把一个网站上线(Pages 免费很强)。
- 也足够你写一些轻量 API(Workers 免费能跑起来)。
通常你可以在免费额度内完成下面这些事:
5.1 用 Pages 免费上线一个站点
你可以在免费套餐里:
- 绑定 GitHub 仓库,push 自动部署。
- 生成 Preview 预览链接(对协作非常实用)。
- 绑定自定义域名,自动 HTTPS。
- 托管静态站点资源。
适合的例子:
- 个人博客。
- 产品介绍页。
- 开源项目文档站。
- 前端 Demo。
5.2 用 Workers 免费写一个轻量 API
你可以在免费套餐里做:
- 一个
GET /api/hello的接口。 - 表单提交接口:
POST /api/feedback。 - Webhook 接收器(例如接收支付成功回调)。
- 反向代理:把请求转发到另一个服务并做鉴权。
再配合 KV、D1、R2 等产品的免费额度(各产品策略不同,通常都有免费层),就能搭出一个可用的“小后端”。
说明:免费套餐的具体额度会随 Cloudflare 调整而变化。选择前建议以 Cloudflare 官方页面的最新说明为准。
6. Workers 与 Pages 的“相同点 vs 不同点”总结表
| 维度 | Workers | Pages |
|---|---|---|
| 定位 | 边缘运行代码(后端/逻辑) | 网站托管与发布(前端/静态资源) |
| 主要产物 | 脚本与路由(请求处理) | 构建后的站点文件(HTML/CSS/JS) |
| 动态能力 | 原生强 | 通过 Pages Functions 提供 |
| 典型工作流 | wrangler 开发与部署 | 连接 Git,push 即部署,PR 预览 |
| 适合人群 | 后端、全栈、平台工程 | 前端、内容、产品、增长 |
| 常见用途 | API、鉴权、聚合、代理、计算 | 官网、博客、文档、SPA |
7. Workers 的优缺点(通俗版)
7.1 Workers 的优点
- “想怎么处理请求就怎么处理”
- 你可以读 header、改 URL、查数据库、做签名校验。
- 适合复杂业务逻辑。
- 边缘执行,速度和稳定性好
- 用户在各地访问都能就近处理。
- 适合对延迟敏感的 API。
- 很适合做“中间层”
- 把多个服务整合成一个对前端友好的接口。
- 例如把用户信息、订单信息、推荐信息聚合成一次请求。
- 和 Cloudflare 的生态配合顺手
- KV:配置、会话、缓存。
- D1:结构化数据。
- R2:对象存储。
- Durable Objects:需要强一致或单点状态的场景。
7.2 Workers 的缺点
- “后端能力强”意味着你要承担更多后端设计工作
- 鉴权怎么做?
- 错误码怎么定义?
- 数据怎么存?
- 日志怎么打?
- 并不是传统意义上的“完整服务器”
- 运行时、限制、请求处理模型与传统 Node/VM 不完全一样。
- 一些依赖本地文件系统或长连接的场景,需要换思路。
- 项目规模变大后,需要更系统的工程化
- 多环境、灰度、监控、告警、回滚。
- 虽然都能做,但需要你搭建规范。
8. Pages 的优缺点(通俗版)
8.1 Pages 的优点
- 部署网站非常省心
- 连上仓库。
- 配好构建命令。
- push 就上线。
- 静态站点性能非常好
- 静态资源天然适合 CDN 分发。
- 对 SEO、首屏速度通常更友好。
- 预览环境(Preview)对协作很强
- 每个 PR 都能生成一个可访问的预览链接。
- 设计、产品、测试可以直接点开看效果。
- 对常见前端框架友好
- React/Vue/Svelte/Next/Astro 等都能找到成熟的部署方式。
8.2 Pages 的缺点
- 它的核心还是“网站托管”
- 一旦你的需求变成“我要一个复杂后端”,Pages 就不是主战场。
- Pages Functions 能做,但更适合轻量 API。
- 动态能力与状态管理的复杂度会快速上升
- 例如要做登录、会话、权限、订单等。
- 如果全塞在 Pages Functions,会让项目结构变得不清晰。
- 对某些完全动态的站点不如纯 Workers 自然
- 如果每个页面都要实时拼装、强依赖数据接口,Workers 往往更顺手。
9. Workers vs Pages:如何选?给你一套简单的决策法
你可以按下面问题自检:
9.1 你的产物主要是“网页文件”还是“接口逻辑”?
- 主要是网页:选 Pages。
- 主要是 API:选 Workers。
9.2 你是否需要 Git 驱动的预览与发布流程?
- 需要非常标准的前端 CI/CD:优先 Pages。
- 你更关注服务端逻辑与路由:优先 Workers。
9.3 你是否需要复杂的鉴权、限流、数据处理?
- 需要:更偏 Workers。
- 只要简单表单、简单接口:Pages Functions 或 Workers 都可以。
9.4 推荐组合(最常见、也最稳妥)
- Pages 托管前端 + Workers 提供 API
- 域名示例:
www.example.com→ Pagesapi.example.com→ Workers
- 好处是职责清晰:
- Pages 专注“展示”。
- Workers 专注“逻辑”。
- 域名示例:
10. 两个小例子:一看就懂的使用方式
例子 A:个人博客 + 评论提交
- 博客页面:用 Pages
- Hugo/Hexo/VitePress 构建后直接发布。
- 评论提交 API:用 Workers(或 Pages Functions)
POST /api/comment- 校验参数。
- 写入 D1。
- 返回评论 ID。
你会发现:博客内容是静态的,适合 Pages;评论是动态写入的,适合 Workers。
例子 B:把第三方 API“包一层”做鉴权与缓存
假设你要调用一个第三方天气 API:
- 你不想把第三方密钥直接放在前端。
- 你还想做缓存,减少调用次数。
这时用 Workers 最合适:
- 前端请求你的接口:
GET /api/weather?city=shanghai - Workers 检查缓存(KV)。
- 没有缓存就去请求第三方服务。
- 把结果写入 KV,设置过期时间。
- 返回给前端。
Pages 也能“放前端页面”,但这个“中间层”逻辑明显是 Workers 的优势场景。
11. 最后的建议:先用最简单的组合起步
如果你正在从 0 开始做一个项目,通常最稳妥的路线是:
- 先把网站用 Pages 跑起来(上线最快,成本最低)。
- 需要 API 时,再加一个 Workers。
- 数据存储按需求选 KV、D1、R2。
这样做的好处是:
- 上线速度快。
- 架构清晰。
- 后续扩展空间大。
Cloudflare Workers 与 Pages:通俗讲解、相同点/不同点、免费套餐与优缺点对比
https://fuwari.vercel.app/posts/20260326/