概述
Cloudflare Workers是一个基于Cloudflare全球网络的serverless函数服务,它可以在 Cloudflare 的边缘网络上运行,为开发者提供了一种简单、灵活的方式来构建和部署应用程序。
Hello, Cloudflare Workers
创建一个Worker项目: pnpm create cloudflare@latest my-first-worker,创建后项目中会包含以下几个比较关键的文件:
wrangler.jsonc: Wrangler配置文件(Wrangler是Cloudflare提供的一个命令行工具,用于部署和管理Cloudflare Workers)index.js (in /src): 使用ES Module语法的Worker代码package.json: 依赖配置
本地调试启动: pnpm run dev
worker部署: pnpm run deploy
默认的index.js文件内容如下:
| |
当worker接收http请求时,会调用fetch方法,也可以别的event handlers来处理不同类型的请求,例如: scheduled()方法处理从 Cron Trigger 触发的请求。
fetch方法返回Response对象或者一个Promise对象(resolve后返回Response对象)。
Workers详细使用
环境变量
环境变量可以在fetch函数的env变量中进行获取,环境变量使用.wrangler.json的vars字段,如果需要区分不同的环境使用不同的变量则可以使用env字段,在命令行使用的时候可以用--env或者-e标志来进行环境的指定,例如:pnpm dlx wrangler dev -e staging
| |
永远不要将敏感信息存储在环境变量中,而是使用secret进行管理
secret
secret是一种特殊的绑定类型,允许将加密文本值附加到workers。密钥在传递给worker的fetch方法中的env参数中可以被访问,可以通过支持Node.js兼容性的workers中process.env访问。
| |
添加secret: pnpm dlx wrangler secret put <KEY>, 或者通过Cloudflare的配置页面进行添加
删除secret: pnpm dlx wrangler secret delete <KEY>
本地开发时一般将敏感信息存储在.dev.vars文件中或者.env文件中。
.dev.vars和.env文件不应提交到 git。将.dev.vars*和.env*添加到项目的.gitignore文件中
配套产品
Hyperdrive
Hyperdrive 可以加速Cloudflare Workers 对现有数据库的访问,即使是单区域数据库也能感觉遍布全球。通过在 Cloudflare 网络中维护与数据库的连接池,Hyperdrive 在您发送查询之前减少了对数据库的七次往返:TCP 握手 (1x)、TLS 协商 (3x) 和数据库身份验证 (3x)。
Hyperdrive 通过管理与源数据库的全局连接数量、有选择地解析和选择要缓存的查询响应,以实现减少数据库负载并加速数据库查询。
Hyperdrive的实现原理:
- 为workers附近新数据连接执行连接设置
- 池化离数据库地域较近的现有连接
- 缓存查询结果