CloudflareWorkers性能优化 workers-performance

这个技能专注于Cloudflare Workers的性能优化,涵盖CPU使用、内存管理、缓存策略和包大小优化等方面,用于解决慢速workers、高延迟、冷启动、CPU限制、内存问题、超时错误等常见问题。关键词包括Cloudflare Workers、性能优化、CPU、内存、缓存、包大小、冷启动、Serverless计算。

Serverless 0 次安装 0 次浏览 更新于 3/7/2026

name: workers-performance description: Cloudflare Workers性能优化,涉及CPU、内存、缓存、包大小。用于处理慢速workers、高延迟、冷启动、CPU限制、内存问题、超时错误。

Cloudflare Workers性能优化

最大化Worker性能并最小化延迟的技术。

快速获胜

// 1. 避免不必要的克隆
// ❌ 错误:克隆整个请求
const body = await request.clone().json();

// ✅ 良好:不重用body时直接解析
const body = await request.json();

// 2. 使用流式处理代替缓冲
// ❌ 错误:缓冲整个响应
const text = await response.text();
return new Response(transform(text));

// ✅ 良好:流式转换
return new Response(response.body.pipeThrough(new TransformStream({
  transform(chunk, controller) {
    controller.enqueue(process(chunk));
  }
})));

// 3. 缓存昂贵操作
const cache = caches.default;
const cached = await cache.match(request);
if (cached) return cached;

关键规则

  1. 保持在CPU限制内 - 免费计划10毫秒,付费计划30毫秒,无限制计划50毫秒
  2. 最小化冷启动 - 保持包大小<1MB,避免动态导入
  3. 使用缓存API - 在边缘缓存响应
  4. 流式处理大负载 - 不要缓冲整个响应
  5. 批处理操作 - 合并多个KV/D1调用

十大性能错误

错误 症状 修复方法
CPU限制超出 Worker被终止 优化热路径,使用流式处理
冷启动延迟 首次请求慢 减少包大小,避免顶层await
内存压力 垃圾回收慢,超时 流式处理数据,避免大数组
KV延迟 读取慢 使用缓存API,批量读取
D1慢查询 高延迟 添加索引,优化SQL
大包 冷启动慢 树摇,代码分割
阻塞操作 请求超时 使用Promise.all,流式处理
不必要克隆 内存峰值 仅在需要时克隆
缺少缓存 重复计算 实现缓存层
同步操作 CPU峰值 使用异步替代方案

CPU优化

分析热路径

async function profiledHandler(request: Request): Promise<Response> {
  const timing: Record<string, number> = {};

  const time = async <T>(name: string, fn: () => Promise<T>): Promise<T> => {
    const start = Date.now();
    const result = await fn();
    timing[name] = Date.now() - start;
    return result;
  };

  const data = await time('fetch', () => fetchData());
  const processed = await time('process', () => processData(data));
  const response = await time('serialize', () => serialize(processed));

  console.log('Timing:', timing);
  return new Response(response);
}

优化JSON操作

// 对于大JSON,使用流式解析器
import { JSONParser } from '@streamparser/json';

async function parseStreamingJSON(stream: ReadableStream): Promise<unknown[]> {
  const parser = new JSONParser();
  const results: unknown[] = [];

  parser.onValue = (value) => results.push(value);

  for await (const chunk of stream) {
    parser.write(chunk);
  }

  return results;
}

内存优化

避免大数组

// ❌ 错误:全部加载到内存中
const items = await db.prepare('SELECT * FROM items').all();
const processed = items.results.map(transform);

// ✅ 良好:分批处理
async function* batchProcess(db: D1Database, batchSize = 100) {
  let offset = 0;
  while (true) {
    const { results } = await db
      .prepare('SELECT * FROM items LIMIT ? OFFSET ?')
      .bind(batchSize, offset)
      .all();

    if (results.length === 0) break;

    for (const item of results) {
      yield transform(item);
    }
    offset += batchSize;
  }
}

缓存策略

多层缓存

interface CacheLayer {
  get(key: string): Promise<unknown | null>;
  set(key: string, value: unknown, ttl?: number): Promise<void>;
}

// 第一层:内存缓存(请求范围内)
const memoryCache = new Map<string, unknown>();

// 第二层:缓存API(边缘本地)
const edgeCache: CacheLayer = {
  async get(key) {
    const response = await caches.default.match(new Request(`https://cache/${key}`));
    return response ? response.json() : null;
  },
  async set(key, value, ttl = 60) {
    await caches.default.put(
      new Request(`https://cache/${key}`),
      new Response(JSON.stringify(value), {
        headers: { 'Cache-Control': `max-age=${ttl}` }
      })
    );
  }
};

// 第三层:KV(全局)
// 使用env.KV.get/put

包优化

// 1. 树摇导入
// ❌ 错误
import * as lodash from 'lodash';

// ✅ 良好
import { debounce } from 'lodash-es';

// 2. 懒加载重依赖
let heavyLib: typeof import('heavy-lib') | undefined;

async function getHeavyLib() {
  if (!heavyLib) {
    heavyLib = await import('heavy-lib');
  }
  return heavyLib;
}

何时加载参考文档

根据任务加载特定参考文档:

  • 优化CPU使用? → 加载 references/cpu-optimization.md
  • 内存问题? → 加载 references/memory-optimization.md
  • 实现缓存? → 加载 references/caching-strategies.md
  • 减少包大小? → 加载 references/bundle-optimization.md
  • 冷启动问题? → 加载 references/cold-starts.md

模板

模板 目的 使用时机
templates/performance-middleware.ts 性能监控 添加计时/分析
templates/caching-layer.ts 多层缓存 实现缓存
templates/optimized-worker.ts 性能模式 启动优化worker

脚本

脚本 目的 命令
scripts/benchmark.sh 负载测试 ./benchmark.sh <url>
scripts/profile-worker.sh CPU分析 ./profile-worker.sh

资源