EdgeOne Makers Functions 概览
静态站点能跑起来只是第一步,真正要做表单提交、接口代理、数据查询这些动态功能,就得靠 Serverless 函数。EdgeOne Makers 提供了两类函数能力: Edge Functions 跑在边缘节点上处理轻量逻辑,Cloud Functions 跑在中心机房处理重计算任务。搞懂两者的区别和适用场景,才能把函数放对地方。
Functions 是什么
简单说,Functions 就是你写的代码片段,不用自己管服务器,平台帮你跑起来。请求来了就执行,执行完就释放资源,按调用次数计费,没有请求就不花钱。
EdgeOne Makers 把函数分成两种类型。
| 对比维度 | Edge Functions | Cloud Functions |
|---|---|---|
| 运行位置 | 全球边缘节点 | 中心机房 |
| 执行环境 | 轻量 V8 Isolates | 完整运行时(Node.js/Python/Go) |
| 冷启动速度 | 毫秒级 | 百毫秒到秒级 |
| 单次执行时长上限 | 几秒到几十秒 | 可以更长 |
| 支持的依赖 | 有限,体积小 | 可以装完整依赖包 |
| 典型用途 | 请求改写、鉴权、A/B 分流 | 复杂计算、文件处理、数据库操作 |
一句话总结: 轻量的、跟请求强相关的逻辑放 Edge Functions,重活累活放 Cloud Functions。
Edge Functions 和 Cloud Functions 怎么选
选错位置不是功能不能用,而是可能浪费钱或者拖慢速度。下面用几个典型场景帮你判断。
场景一: 改写请求头
你想给所有请求加一个安全头,或者根据用户地区返回不同内容。这种逻辑简单、每个请求都要走,放 Edge Functions 最合适,因为代码就在离用户最近的节点上执行,延迟最低。
场景二: 图片压缩或格式转换
用户请求一张大图,你要在服务端压缩或者转成 WebP 格式。这种操作吃 CPU 和时间,放边缘节点不现实,Cloud Functions 更合适,它有充足的计算资源。
场景三: 表单数据写入数据库
用户在页面提交了一个表单,你要把数据存到数据库。数据库通常在中心机房,边缘节点访问数据库绕路太远。Cloud Functions 和数据库在同一个网络环境里,延迟更低。
场景四: 接口鉴权
判断请求是否携带合法的 Token,不合法直接拒绝。这种逻辑每次请求都要跑,而且判断本身很快,放 Edge Functions 能在边缘直接拦截非法请求,节省后续资源。
汇总一下选择思路。
| 判断条件 | 选 Edge Functions | 选 Cloud Functions |
|---|---|---|
| 每个请求都要执行 | 是 | 不太适合 |
| 需要完整运行时和依赖 | 不需要 | 需要 |
| 对延迟敏感 | 非常敏感 | 可以接受一定延迟 |
| 需要访问数据库 | 不需要 | 需要 |
| 执行时间可能较长 | 不会 | 可能 |
使用场景总览
把 Edge Functions 和 Cloud Functions 配合起来用,基本能覆盖常见的后端需求。
Edge Functions 常用场景
- 请求头改写,加安全头、去冗余头
- 地理位置判断,按地区返回不同内容
- A/B 测试分流
- 接口鉴权和频率限制
- URL 重写和重定向
Cloud Functions 常用场景
- RESTful API 开发
- 文件上传和处理
- 数据库读写操作
- 定时任务
- 第三方服务集成
两者还可以串联使用: Edge Functions 做前置拦截和路由分发,Cloud Functions 做后面的业务逻辑。这种模式在中间件那篇会详细讲。
开发流程概览
不管用哪种函数,整体流程差不多。
编写函数代码
↓
本地调试
↓
部署到 EdgeOne
↓
绑定触发条件(路由、定时器等)
↓
线上运行
EdgeOne Makers 的控制台提供在线编辑器,小改动可以直接在浏览器里改。大一点的项目建议本地开发,用命令行工具部署。
速查卡片
| 要点 | 说明 |
|---|---|
| Functions 是什么 | 不用管服务器的代码片段,按调用次数计费 |
| 两种类型 | Edge Functions(边缘) 和 Cloud Functions(云端) |
| Edge Functions 特点 | 跑在边缘节点,毫秒级启动,适合轻量逻辑 |
| Cloud Functions 特点 | 跑在中心机房,完整运行时,适合重计算 |
| 选 Edge 的信号 | 每个请求都跑、对延迟敏感、逻辑简单 |
| 选 Cloud 的信号 | 需要完整依赖、要访问数据库、执行时间长 |
| 两者可以串联 | Edge 做前置拦截,Cloud 做业务逻辑 |
| 开发流程 | 编写代码、本地调试、部署、绑定触发条件、运行 |