Skip to content

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 的执行模型:

  1. 用户访问 pokeemerald.com
  2. DNS 请求路由到最近的 Cloudflare 边缘节点。
  3. 边缘节点的 Worker 处理请求,返回静态资源(HTML、JS、Wasm)。
  4. 浏览器加载并执行 Wasm 模块,游戏开始运行。

构建产物

部署所需的文件被打包到 dist/cloudflare/ 目录中,通常包含:

  • index.html — 主页面
  • app.js — 渲染和输入处理逻辑
  • pokeemerald.wasm — 编译后的游戏 Wasm 模块
  • 其他静态资源(CSS、图片等)

在 pokeemerald-wasm 中的实现

项目的 Cloudflare Workers 部署流程如下:

  1. 构建:执行 make wrangler-site,该命令完成以下工作:
    • 编译 C 源码为 Wasm 模块。
    • 处理游戏资源文件。
    • 将所有 Web 部署文件打包到 dist/cloudflare/ 目录。
  2. 配置wrangler.toml 文件配置了项目的名称、入口、资源目录等信息。
  3. 部署:通过 wrangler deploy 命令将构建产物上传到 Cloudflare 边缘网络。
  4. 访问:用户通过 pokeemerald.com 访问游戏,Cloudflare 自动路由到最近的边缘节点。

整个应用在浏览器本地运行,Cloudflare Workers 仅负责高效地分发静态文件,不参与游戏的实际运行。

相关概念

  • pret — pokeemerald-wasm 所基于的反编译项目