Appearance
Cloudflare Workers
是什么
Cloudflare Workers 是 Cloudflare 提供的边缘计算平台,允许开发者将代码部署到 Cloudflare 全球分布的边缘节点上。代码在距离用户最近的节点执行,从而实现极低的响应延迟。在 pokeemerald-wasm 项目中,Cloudflare Workers 用于托管和分发整个 Web 应用。
为什么需要
pokeemerald-wasm 是一个纯前端的 Web 应用——游戏逻辑在 Wasm 中运行,渲染在浏览器中完成,不需要服务器端计算。选择 Cloudflare Workers 作为部署平台有以下优势:
- 全球加速:Cloudflare 在全球有数百个边缘节点,用户无论身处何地都能快速加载游戏。
- 静态资源托管:Workers 可以高效地托管 Wasm 模块、JavaScript、HTML 等静态资源。
- 低延迟:边缘节点距离用户更近,Wasm 模块的下载速度更快,游戏启动时间更短。
- 免费额度充足:对于这种流量规模的项目,Cloudflare Workers 的免费额度通常足够使用。
原理与实现
wrangler.toml 配置
Cloudflare Workers 项目通过 wrangler.toml 文件进行配置,包含:
- 名称和版本:项目的名称和兼容性日期。
- 路由规则:指定哪些域名和路径由 Worker 处理。
- 静态资源配置:指定静态文件的目录和路由规则。
- 环境变量:不同环境(开发/生产)的配置。
边缘执行模型
Cloudflare Workers 的执行模型:
- 用户访问
pokeemerald.com。 - DNS 请求路由到最近的 Cloudflare 边缘节点。
- 边缘节点的 Worker 处理请求,返回静态资源(HTML、JS、Wasm)。
- 浏览器加载并执行 Wasm 模块,游戏开始运行。
构建产物
部署所需的文件被打包到 dist/cloudflare/ 目录中,通常包含:
index.html— 主页面app.js— 渲染和输入处理逻辑pokeemerald.wasm— 编译后的游戏 Wasm 模块- 其他静态资源(CSS、图片等)
在 pokeemerald-wasm 中的实现
项目的 Cloudflare Workers 部署流程如下:
- 构建:执行
make wrangler-site,该命令完成以下工作:- 编译 C 源码为 Wasm 模块。
- 处理游戏资源文件。
- 将所有 Web 部署文件打包到
dist/cloudflare/目录。
- 配置:
wrangler.toml文件配置了项目的名称、入口、资源目录等信息。 - 部署:通过
wrangler deploy命令将构建产物上传到 Cloudflare 边缘网络。 - 访问:用户通过
pokeemerald.com访问游戏,Cloudflare 自动路由到最近的边缘节点。
整个应用在浏览器本地运行,Cloudflare Workers 仅负责高效地分发静态文件,不参与游戏的实际运行。
相关概念
- pret — pokeemerald-wasm 所基于的反编译项目