Cloudflare Workers 新手指南:从零开始认识 – wiki基地


Cloudflare Workers 新手指南:从零开始认识

在当今快节奏的互联网世界中,构建高性能、高可用且易于扩展的应用程序是开发者面临的核心挑战。传统的服务器架构常常意味着复杂的配置、维护成本以及随着用户增长而带来的伸缩难题。正是在这样的背景下,Serverless(无服务器)计算模型应运而生,而 Cloudflare Workers 则是这一领域中一个独特且极其强大的玩家。

如果你是刚接触 Cloudflare Workers,对它的概念感到好奇,或者想知道如何开始使用它来构建自己的应用,那么你来对地方了。这篇指南将带你从零开始,深入了解 Cloudflare Workers 是什么、它为何如此特别、如何搭建你的第一个 Worker,以及一些基础进阶用法。

我们将涵盖以下内容:

  1. 什么是 Cloudflare Workers? – 理解核心概念和定位。
  2. 为什么选择 Cloudflare Workers? – 探究其独特的优势。
  3. Cloudflare Workers 的技术基石 – V8 Isolates 和全球网络。
  4. 从零开始:你的第一个 Worker – 使用 Cloudflare Dashboard。
  5. 拥抱效率:使用 Wrangler CLI – 本地开发与部署。
  6. 数据存储初探:Cloudflare KV – 为你的 Worker 添加持久性。
  7. 更多可能性:其他绑定与服务 – 简要了解生态系统。
  8. 实际应用案例分析 – 一些简单的入门级示例。
  9. 理解限制与定价 – 知己知彼,量力而行。
  10. 下一步:持续学习与探索

准备好了吗?让我们一起踏上 Cloudflare Workers 的探索之旅!

1. 什么是 Cloudflare Workers?

简单来说,Cloudflare Workers 是一个基于 Cloudflare 遍布全球的边缘网络的 Serverless 函数计算平台。它允许开发者在 Cloudflare 的全球数据中心上部署和运行 JavaScript、WebAssembly 或其他兼容 Web Worker API 的代码。

与传统的 Serverless 平台(如 AWS Lambda、Azure Functions)不同的是,Cloudflare Workers 的代码不是运行在容器或虚拟机中,而是运行在 Cloudflare 自己构建的基于 V8 引擎(与 Chrome 浏览器相同的 JavaScript 引擎)的 Isolates 中。这是一种更轻量、启动速度极快、内存占用极低的技术。

你可以将 Workers 理解为在 Cloudflare 的边缘节点上运行的一小段代码,这段代码可以拦截、检查、修改甚至完全响应来自用户的 HTTP 请求,而无需这些请求到达你的源服务器。它就像一个位于用户和你的服务器之间的智能代理。

核心概念关键词:

  • Serverless (无服务器): 你无需管理服务器、操作系统、运行时环境等基础设施。你只需编写代码并部署。
  • Edge Computing (边缘计算): 代码运行在离用户最近的 Cloudflare 数据中心,大大减少了延迟。
  • JavaScript/WebAssembly: 使用标准 Web 技术编写代码。
  • HTTP Handler: Worker 主要通过处理 HTTP 请求来工作。

2. 为什么选择 Cloudflare Workers?

Cloudflare Workers 之所以受到广泛关注和喜爱,得益于其独特的技术架构和商业模式所带来的诸多优势:

  • 极致的启动速度和低延迟: 由于使用了 V8 Isolates 而非容器,Workers 的冷启动时间(即从零启动到开始处理请求的时间)几乎为零(通常在毫秒级),甚至很多时候是热启动。结合 Cloudflare 遍布全球的边缘网络,代码在离用户最近的地方执行,显著降低了应用程序的响应延迟,提升了用户体验。
  • 卓越的性能和扩展性: Workers 能够轻松应对巨大的流量峰值,因为请求可以在全球范围内的多个数据中心并行处理。你无需担心伸缩问题,Cloudflare 会自动为你搞定。
  • 极具竞争力的成本: Cloudflare Workers 的定价模式通常非常经济实惠,尤其是对于高流量、低计算需求的场景。免费套餐提供了相当可观的请求数量,对于很多小项目或个人开发者来说已经足够。付费模式也非常透明,主要基于请求次数和一些资源使用量。
  • 强大的灵活性和控制力: Workers 允许你在 HTTP 请求到达你的源服务器之前或之后对其进行细粒度的控制。你可以轻松实现请求路由、Header 修改、内容重写、缓存控制、身份验证、API 网关、甚至完整的后端服务。
  • 简化部署和维护: 你只需将代码推送到 Cloudflare,部署几乎是即时的,且在全球同步。没有服务器需要修补、更新或维护。
  • 内置安全性: 作为 Cloudflare 生态的一部分,Workers 自然地集成了 Cloudflare 的安全能力,如 DDoS 防护、WAF(Web Application Firewall)等。

典型的使用场景:

  • API 网关/代理: 统一处理来自不同客户端的请求,进行认证、限流、日志记录、请求路由等。
  • 轻量级后端服务: 构建简单的 API、处理表单提交、发送邮件等。
  • 网站加速和优化: 修改 HTML/CSS/JS、优化图片、实现高级缓存策略。
  • URL 重写和重定向: 根据复杂的规则进行流量分发。
  • 边缘认证和授权: 在边缘验证用户身份,保护后端服务。
  • 数据处理和转换: 在数据到达源服务器前进行格式转换、清洗等。
  • 静态网站托管 (Workers Sites): 直接从 Cloudflare 的边缘网络提供静态文件。
  • A/B 测试和流量分发: 根据规则将用户导向不同版本的网站或服务。

3. Cloudflare Workers 的技术基石

理解 Cloudflare Workers 的底层技术原理,能帮助我们更好地利用它的优势。

  • V8 Isolates: 这是 Workers 最核心的技术。V8 是 Google Chrome 浏览器用于执行 JavaScript 的高性能引擎。Cloudflare Workers 利用 V8 的多租户能力,在同一个 V8 进程中运行多个独立的 Worker 实例,每个实例都在一个隔离的环境中(即 Isolates)。每个 Isolate 都有自己的内存空间和执行环境,但它们共享底层的 V8 进程资源。与虚拟机或容器相比,Isolates 的启动开销微乎其微,内存占用极低,可以在同一台物理机上运行数万甚至数十万个 Isolates。这正是 Workers 实现极速冷启动和高密度的关键。
  • 全球边缘网络: Cloudflare 拥有遍布全球数百个城市的数据中心网络。当你部署一个 Worker 时,它会被分发到所有这些数据中心。当用户发起请求时,Cloudflare 的 Anycast 网络会将请求路由到离用户最近的数据中心。在那里,请求会被 Workers 代码拦截和处理。这种分布式架构确保了低延迟和高可用性。
  • Service Worker API 标准: Cloudflare Workers 的开发模型很大程度上借鉴了浏览器 Service Worker API。Worker 的核心代码结构通常是一个事件监听器,监听 fetch 事件。当一个 HTTP 请求触发 Worker 执行时,Worker 代码会收到一个 fetch 事件,其中包含一个 Request 对象。你的代码需要处理这个 Request 对象,并返回一个 Response 对象。这种基于标准的 API 设计使得熟悉前端开发或 Service Workers 的开发者更容易上手。

“`javascript
// 基本的 Worker 结构
addEventListener(‘fetch’, event => {
// event.request 是当前的 HTTP 请求对象
event.respondWith(handleRequest(event.request));
});

async function handleRequest(request) {
// 在这里处理请求,例如:
// console.log(request.method, request.url);

// 返回一个 Response 对象
return new Response(‘Hello, world!’, {
headers: { ‘content-type’: ‘text/plain’ },
});
}
“`

需要注意的是,尽管 Workers 基于 Web Worker API,但它运行在服务端的 Node.js 环境之外,拥有一些额外的 API 和功能(例如访问 KV 存储、发出子请求到其他服务等),同时也有一些浏览器端 API 不可用。

4. 从零开始:你的第一个 Worker (使用 Cloudflare Dashboard)

对于初学者来说,使用 Cloudflare Dashboard(控制台)来创建和部署第一个 Worker 是最简单快捷的方式。无需安装任何开发工具。

步骤 1: 注册 Cloudflare 账号

如果你还没有 Cloudflare 账号,请访问 https://www.cloudflare.com/ 注册一个免费账号。注册过程很简单,只需要邮箱和密码。

步骤 2: 导航到 Workers & Pages

登录你的 Cloudflare 账号后,在左侧导航栏找到并点击 Workers & Pages

步骤 3: 创建 Application

在 Workers & Pages 页面,点击右上角的 Create Application 按钮。

步骤 4: 创建 Worker

在创建 Application 的页面,你会看到几个选项。选择 Create Worker

步骤 5: 选择模板和命名

Cloudflare 会为你提供一些入门模板。对于第一个 Worker,可以选择默认的 “HTTP handler” 模板,它会提供一个基本的代码结构。

接下来,你需要为你的 Worker 命名。这个名字将成为你的 Worker 的子域名的一部分,格式通常是 your-worker-name.your-account-name.workers.dev。选择一个独特且易于记忆的名字。例如,你可以命名为 my-first-worker

点击 Deploy。Cloudflare 会为你创建一个新的 Worker 项目,并分配一个临时的 workers.dev 子域名。

步骤 6: 编辑和部署代码

部署完成后,你会进入 Worker 的概览页面。点击 Edit code 按钮。

你会看到一个在线的代码编辑器,里面是模板自带的基础代码,通常长这样:

“`javascript
/*
* Welcome to Cloudflare Workers!
*
* This is a template for a simple HTTP handler.
*
* Go to https://developers.cloudflare.com/workers/ to learn more.
/

export default {
async fetch(request, env, ctx) {
return new Response(‘Hello World!’);
},
};
“`

这个代码做了什么?
* export default { ... }: 这是 Workers 的模块化导出方式。
* async fetch(request, env, ctx): 这是 Worker 接收到 HTTP 请求时会被调用的异步函数。
* request: 一个 Request 对象,包含了关于传入请求的所有信息(URL, method, headers, body 等)。
* env: 一个对象,包含了你绑定到 Worker 的环境变量和资源(如 KV namespaces, Durable Objects 等)。我们后面会讲到。
* ctx: 一个对象,提供了 Worker 执行的上下文,比如 ctx.waitUntil() 可以用来执行一些异步任务,但不影响响应的立即返回。
* return new Response('Hello World!');: 创建并返回一个 Response 对象,这是发送回给用户的响应。这里返回了一个简单的文本响应 “Hello World!”。

你可以在这里修改代码。例如,让它返回一个带有不同内容的响应:

javascript
export default {
async fetch(request, env, ctx) {
const url = new URL(request.url);
return new Response(`Hello from Cloudflare Worker at ${url.pathname}!`);
},
};

修改完成后,点击编辑器右上角的 Save and Deploy 按钮。Cloudflare 会立即将你的新代码部署到全球网络上。

步骤 7: 测试你的 Worker

部署成功后,你可以通过访问分配给你的 Worker 的 workers.dev 子域名来测试它。在 Worker 概览页,你可以看到这个域名。复制它,然后在浏览器中打开。

你应该会看到你的 Worker 返回的响应,例如 “Hello from Cloudflare Worker at /!”.

恭喜!你已经成功创建、部署并测试了你的第一个 Cloudflare Worker。

使用 Dashboard 的优点:

  • 无需安装任何软件。
  • 最快的上手方式。
  • 适合进行简单的代码修改和测试。

使用 Dashboard 的缺点:

  • 不适合大型项目。
  • 无法进行版本控制。
  • 缺乏本地开发环境(无法在本地测试)。
  • 难以集成构建工具和复杂的依赖项。

因此,对于更认真的开发工作,我们需要引入 Cloudflare 官方提供的命令行工具:Wrangler。

5. 拥抱效率:使用 Wrangler CLI

Wrangler 是 Cloudflare 官方为 Workers 和 Pages 提供的命令行工具,它极大地提升了开发效率,支持本地开发、使用模块、集成构建流程、管理配置和部署。

步骤 1: 安装 Node.js 和 npm (如果尚未安装)

Wrangler 是一个 Node.js 应用,你需要先安装 Node.js 和其包管理器 npm (或者 yarn/pnpm)。访问 https://nodejs.org/ 下载并安装 LTS 版本。安装完成后,打开终端或命令行,输入 node -vnpm -v 来确认安装成功。

步骤 2: 安装 Wrangler

打开终端或命令行,运行以下命令全局安装 Wrangler:

bash
npm install -g wrangler

安装完成后,输入 wrangler --version 检查是否安装成功。

步骤 3: 登录 Cloudflare 账号

在终端中运行以下命令,通过 Wrangler 连接到你的 Cloudflare 账号:

bash
wrangler login

这个命令会打开一个浏览器窗口,要求你授权 Wrangler 访问你的 Cloudflare 账号。授权后,终端会显示登录成功。

步骤 4: 创建一个新的 Worker 项目

导航到你想要创建项目的文件夹,然后运行以下命令初始化一个新的 Worker 项目:

bash
wrangler init my-worker-project

my-worker-project 是你的项目文件夹名称。Wrangler 会在这个文件夹内创建一个基本项目结构,包括:

  • src/index.js: 你的 Worker 代码主文件。
  • wrangler.toml: Worker 的配置文件,包含项目名称、类型、绑定的资源等。

你可以选择一个模板,例如选择 Fetch handler 模板,它会生成类似 Dashboard 中的基础代码。

步骤 5: 理解项目结构和 wrangler.toml

打开 my-worker-project 文件夹,查看其中的内容。

src/index.js 是你编写 Worker 代码的地方。

wrangler.toml 是项目的核心配置文件:

“`toml
name = “my-worker-project” # Worker 的名称
main = “src/index.js” # Worker 的入口文件
compatibility_date = “2023-10-26” # 指定兼容性日期,影响运行时行为

如果需要绑定域名,可以在这里配置

routes = [

{ pattern = “your-domain.com/*”, zone_id = “YOUR_ZONE_ID” }

]

如果需要绑定 KV 存储或其他资源,也可以在这里配置

[kv_namespaces]

binding = “MY_KV”

id = “YOUR_KV_NAMESPACE_ID”

“`

你需要根据你的项目需求修改 wrangler.tomlname 字段会决定你在 workers.dev 上预览的子域名 (例如 my-worker-project.your-account-name.workers.dev),以及你在 Cloudflare Dashboard 中看到的 Worker 名称。compatibility_date 是一个重要的设置,它允许 Cloudflare 在不破坏现有 Workers 的情况下引入新的运行时特性和行为变更。你应该将其设置为当前的日期或最近的日期,以使用最新的运行时特性。

步骤 6: 本地开发 (wrangler dev)

Wrangler 最强大的功能之一是本地开发模式。在项目根目录下打开终端,运行:

bash
wrangler dev

这个命令会在你的本地机器上启动一个模拟的 Workers 环境。它会监听你代码的修改,并自动热重载。Wrangler 会提供一个本地地址(通常是 http://127.0.0.1:8787)和一个临时的 workers.dev 预览地址。

你可以访问本地地址进行快速开发和测试。对代码进行修改后,保存文件,Wrangler 会自动重新加载,刷新浏览器即可看到更改,极大地提高了开发效率。通过 wrangler dev 提供的预览地址,你还可以在模拟的 Cloudflare 环境中进行测试,包括测试绑定的 KV 等资源。

步骤 7: 部署 Worker (wrangler publish)

当你完成开发并在本地测试通过后,可以使用 Wrangler 将 Worker 部署到 Cloudflare 的全球网络上。

在项目根目录下打开终端,运行:

bash
wrangler publish

Wrangler 会打包你的代码,并将其上传到 Cloudflare。部署过程通常非常快。部署成功后,Wrangler 会告诉你 Worker 的 workers.dev 地址。访问这个地址,你就能看到部署在真实边缘网络上的 Worker。

使用 Wrangler 的优点:

  • 本地开发体验: 快速迭代和调试。
  • 版本控制: 代码存储在本地文件系统中,可以方便地使用 Git 等工具进行版本管理。
  • 模块化: 支持 Node.js 模块,可以引入第三方库(需要 Workers 运行时兼容)。
  • 构建流程: 可以与 Webpack, esbuild 等构建工具集成(Wrangler 默认使用 esbuild)。
  • 环境管理: 方便配置和切换不同的部署环境(例如开发环境、生产环境)。
  • 资源绑定管理: 更清晰地配置 KV、Durable Objects、R2 等绑定。

6. 数据存储初探:Cloudflare KV

对于许多 Worker 应用来说,仅仅处理请求并返回静态响应是不够的,它们通常需要存储和读取一些数据。Cloudflare 提供了多种存储解决方案,其中最简单、最适合 Workers 轻量级存储需求的是 Cloudflare Workers KV

KV 是一个全球分布的、键值对(Key-Value)存储系统。它被设计用于存储非结构化数据,并且在所有 Cloudflare 数据中心具有最终一致性。这意味着写入的数据可能不会立即可在全球所有边缘节点上读取到最新版本,但最终所有节点都会同步。KV 非常适合存储配置信息、功能标志、简单的用户偏好、短时缓存数据等。

核心特点:

  • 键值对: 数据以 Key (字符串) -> Value (字符串或二进制) 的形式存储。
  • 全球分布: 数据被复制到 Cloudflare 的全球边缘网络。
  • 最终一致性: 写入操作可能需要一些时间才能在全球范围内同步。
  • 低延迟读取: 从离用户最近的边缘节点读取数据通常非常快。
  • 成本效益: 定价通常基于存储容量、读取次数和写入次数。

如何使用 KV:

使用 Wrangler 配置和管理 KV 是最方便的方式。

步骤 1: 创建 KV Namespace

KV 存储被组织在不同的 “Namespaces” 中。每个 Namespace 都是一个独立的存储空间。在终端中,使用 Wrangler 创建一个新的 Namespace:

bash
wrangler kv:namespace create MY_NAMESPACE

MY_NAMESPACE 是你为这个 Namespace 指定的名称(用于在 wrangler.toml 中绑定)。Wrangler 会提示你为这个 Namespace 选择一个环境(例如 production)。执行命令后,Wrangler 会为你创建一个 Namespace,并返回一个唯一的 ID。记下这个 ID。

步骤 2: 在 wrangler.toml 中绑定 KV Namespace

打开你的 Worker 项目的 wrangler.toml 文件,添加或修改 [kv_namespaces] 部分,将你刚刚创建的 KV Namespace 绑定到你的 Worker:

“`toml
name = “my-worker-project”
main = “src/index.js”
compatibility_date = “2023-10-26”

[[kv_namespaces]]
binding = “MY_KV” # 这个名字是你将在 Worker 代码中用来访问 KV 的变量名
id = “YOUR_KV_NAMESPACE_ID” # 将 YOUR_KV_NAMESPACE_ID 替换为你刚刚创建 Namespace 时得到的 ID
“`

binding = "MY_KV" 表示在你的 Worker 代码中,可以通过 env.MY_KV 来访问这个 KV Namespace。

步骤 3: 在 Worker 代码中访问 KV

现在,你可以在 src/index.js 文件中使用 env.MY_KV 来执行 KV 操作:

“`javascript
export default {
async fetch(request, env, ctx) {
const url = new URL(request.url);
const path = url.pathname;

if (path === '/put-data') {
  // 示例:写入数据到 KV
  await env.MY_KV.put('greeting', 'Hello from KV!');
  return new Response('Data "greeting" stored in KV.');

} else if (path === '/get-data') {
  // 示例:从 KV 读取数据
  const greeting = await env.MY_KV.get('greeting');
  if (greeting === null) {
    return new Response('Greeting not found in KV.', { status: 404 });
  }
  return new Response(`Greeting from KV: ${greeting}`);

} else {
  // 默认响应
  return new Response('Welcome! Try /put-data or /get-data');
}

},
};
“`

KV 的常用方法:

  • env.MY_KV.put(key, value, options): 写入一个键值对。Value 可以是字符串或 ArrayBufferoptions 可以设置过期时间等。
  • env.MY_KV.get(key, options): 读取 Key 对应的 Value。默认返回字符串。options 可以指定返回类型(例如 ‘text’, ‘json’, ‘arrayBuffer’, ‘stream’)。如果 Key 不存在,返回 null
  • env.MY_KV.delete(key): 删除指定的 Key。
  • env.MY_KV.list(options): 列出 Namespace 中的 Key。options 可以用于分页和过滤。

步骤 4: 部署并测试

保存 wrangler.tomlsrc/index.js。然后使用 Wrangler 部署你的 Worker:

bash
wrangler publish

部署成功后,访问你的 Worker 的 workers.dev 地址,分别访问 /put-data/get-data 路径来测试 KV 功能。

KV 的适用场景:

  • 存储网站配置、A/B 测试参数。
  • 简单的计数器或访问记录。
  • 存储短时有效的令牌或会话信息。
  • 作为轻量级缓存。

KV 的不适用场景:

  • 需要强一致性的数据。
  • 需要复杂查询或关系型数据的场景(考虑 D1 或其他数据库)。
  • 存储大量大型二进制文件(考虑 R2)。

7. 更多可能性:其他绑定与服务

Cloudflare 生态系统不断扩展,提供了许多其他服务可以与 Workers 集成,通过 “绑定” 的方式在 Worker 代码中访问:

  • Durable Objects: 提供有状态的 Serverless 计算。与无状态的 Workers 不同,Durable Objects 允许你在特定对象(由 ID 标识)上维护持久的状态。这对于需要长连接、协调客户端或维护特定实例状态的应用非常有用,比如实时协作应用、游戏服务器状态、分布式锁等。虽然概念略复杂,但它解决了传统 Serverless 在有状态应用上的短板。
  • R2 Storage: 一个 S3 兼容的对象存储服务,用于存储大量非结构化数据,如图片、视频、文档等。R2 的优势在于无需出口流量费用,与 Workers 集成紧密,可以轻松地从边缘网络提供文件。
  • D1: Cloudflare 的 Serverless 数据库,基于 SQLite。它提供了一个关系型数据库选项,适用于需要结构化数据和 SQL 查询的场景。数据在全球分布,可以在边缘进行读取。
  • Service Bindings: 允许一个 Worker 调用另一个 Worker 或 Page Functions。这有助于构建更复杂的、由多个服务组成的应用程序。
  • Queues: 一个消息队列服务,用于处理异步任务和解耦服务。
  • Hyperdrive: 数据库连接加速器,减少延迟。

这些服务都可以通过在 wrangler.toml 中配置相应的绑定,然后在 Worker 代码中通过 env 对象访问。随着你对 Workers 的深入了解,探索这些绑定将为你打开更多构建复杂应用的可能性。

8. 实际应用案例分析

让我们看几个简单的 Worker 应用代码示例,巩固所学:

案例 1: 简单的 URL 重定向

根据请求路径将用户重定向到不同的 URL。

“`javascript
export default {
async fetch(request) {
const url = new URL(request.url);

if (url.pathname === '/blog') {
  // 永久重定向到新的博客地址
  return Response.redirect('https://my-new-blog.example.com', 301);
} else if (url.pathname === '/old-page') {
  // 临时重定向
  return Response.redirect('https://my-website.example.com/new-page', 302);
}

// 对于其他路径,继续请求源服务器(如果绑定了域名)
// 或者返回一个默认响应
return new Response('Welcome to my site!', { status: 200 });

},
};
“`

案例 2: 修改响应头 (添加 CORS)

为所有来自 Worker 的响应添加 CORS 头,允许跨域访问。

“`javascript
export default {
async fetch(request) {
// 你可以根据需要处理请求,例如 fetch 一个资源
// 这里简单返回一个响应
const originalResponse = new Response(‘API Response Data’, {
headers: { ‘Content-Type’: ‘text/plain’ }
});

// 克隆响应并添加 CORS 头
const response = new Response(originalResponse.body, originalResponse);
response.headers.set('Access-Control-Allow-Origin', '*'); // 允许所有来源
response.headers.set('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, OPTIONS');
response.headers.set('Access-Control-Allow-Headers', 'Content-Type, Authorization');

// 处理预检请求 (OPTIONS)
if (request.method === 'OPTIONS') {
  return new Response(null, {
    status: 204,
    headers: response.headers // 使用上面设置的 CORS 头
  });
}

return response;

},
};
“`

案例 3: 简单的 API 端点

创建一个返回 JSON 数据的简单 API。

“`javascript
export default {
async fetch(request) {
const url = new URL(request.url);
const path = url.pathname;

if (path === '/api/users') {
  const users = [
    { id: 1, name: 'Alice' },
    { id: 2, name: 'Bob' },
  ];
  // 返回 JSON 格式数据
  return new Response(JSON.stringify(users), {
    headers: { 'Content-Type': 'application/json' },
  });
} else if (path === '/api/hello') {
   const name = url.searchParams.get('name') || 'Guest';
   return new Response(`Hello, ${name}!`);
}

// 未知路径
return new Response('Not Found', { status: 404 });

},
};
“`

这些例子展示了 Workers 在处理 HTTP 请求方面的灵活性。你可以根据自己的需求构建更复杂的逻辑。

9. 理解限制与定价

虽然 Cloudflare Workers 非常强大和经济,但作为 Serverless 服务,它也有一些限制,尤其是在免费层级:

  • CPU 时间限制: 每个 Worker 请求的 CPU 执行时间是有限的。免费层级通常是 10 毫秒,付费层级更高。如果你的 Worker 执行复杂计算或长时间运行的任务,可能会超过这个限制导致请求失败。
  • 内存限制: Worker 实例的内存使用量也是有限的。
  • 请求次数限制: 免费层级每天有固定的请求次数限制(例如每天 100,000 次)。超过后请求将失败或需要升级。
  • Workers KV 限制: KV 有存储容量、每日读取/写入次数、Key 大小、Value 大小等限制。
  • 冷启动 (Cold Starts): 尽管 V8 Isolates 极大地减少了冷启动时间,但在流量非常低的 Worker 上,偶尔仍可能遇到轻微的延迟。
  • 第三方库兼容性: Worker 运行时环境不是 Node.js,因此并非所有 Node.js 库都能直接使用。你需要确保使用的库只依赖于 Web 标准 API 或 Workers 提供的特定 API。

定价: Cloudflare Workers 的定价模型非常透明,通常基于请求次数、CPU 时间、以及绑定的其他服务(如 KV 存储容量和操作次数)的使用量。免费层级对于许多入门级项目和测试来说已经非常慷役。对于需要更高资源或流量的应用,付费计划提供了更高的限制和更低的单位成本。在 Cloudflare 官网可以找到详细的定价信息。

了解这些限制对于设计你的 Worker 应用至关重要,确保你的应用能够高效稳定地运行在 Workers 平台上。

10. 下一步:持续学习与探索

恭喜你已经走到了这里!你现在应该对 Cloudflare Workers 有了基本的认识,并掌握了创建和部署第一个 Worker 的方法,以及如何使用 Wrangler 进行更高效的开发,并初步了解了 KV 存储。

这只是一个开始。Cloudflare Workers 的功能远不止于此。要进一步深入学习和探索,你可以:

  • 阅读官方文档: Cloudflare Developer 文档是学习 Workers 最权威和全面的资源,涵盖了所有功能、API、用例和高级主题。(https://developers.cloudflare.com/workers/)
  • 探索更多绑定: 深入了解 Durable Objects、R2、D1 等服务,看看它们如何与 Workers 协同工作,构建更复杂的应用。
  • 学习更高级的 Worker 特性: Service Bindings、Modules、Cron Triggers (定时触发 Workers)、队列 (Queues) 等。
  • 参与社区: 加入 Cloudflare 开发者 Discord 服务器、社区论坛等,与其他开发者交流经验,获取帮助。
  • 查看示例代码: Cloudflare 在 GitHub 上提供了大量 Workers 示例代码,可以作为学习的参考。
  • 实践项目: 尝试使用 Workers 构建一个小项目,比如一个简单的缩短网址服务、一个图片处理代理、一个边缘认证服务等。

Cloudflare Workers 是一个快速发展且充满潜力的平台,掌握它可以为你打开构建现代、高性能、低成本应用的全新思路。

结论

Cloudflare Workers 以其独特的 V8 Isolates 技术和全球边缘网络,提供了一种前所未有的 Serverless 计算体验。它拥有极快的启动速度、卓越的性能、极具竞争力的成本以及强大的灵活性,是构建下一代应用程序的理想平台。

从简单的 HTTP 响应到复杂的 API 网关和有状态服务,Workers 的应用场景广泛。通过 Cloudflare Dashboard,你可以快速开始你的第一个 Worker;而 Wrangler CLI 则提供了专业的开发体验,让你能够更高效地构建、测试和部署 Worker 应用。结合 KV、Durable Objects、R2、D1 等服务,你可以在 Cloudflare 的边缘网络上构建功能丰富、高性能的分布式系统。

希望这篇从零开始的指南能够帮助你迈出认识 Cloudflare Workers 的第一步。立即动手实践吧,去体验边缘计算的魅力,释放你的创造力!


发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注

滚动至顶部