К основному содержанию
скилл CX Codex

cloudflare-workers-performance — скилл для Claude Code: ускоряет

Скилл для оптимизации Cloudflare Workers: CPU, память, кеш, размер бандла. Пригодится, когда воркер тормозит или упирается в лимиты.

Установить в Claude Code · Через Skills CLI (Vercel) Все способы и платформы ↓
npx skills add secondsky/claude-skills --skill cloudflare-workers-performance -a claude-code
Открыть на GitHub

Что делает cloudflare-workers-performance

Скилл разбирает производительность Cloudflare Workers по четырём направлениям: процессорное время, память, кеширование и размер бандла. Внутри — таблица типичных ошибок с симптомами и способами починки: превышение лимита CPU, медленный холодный старт, давление на память, задержки KV и D1, лишнее клонирование запроса.

Практическая часть — примеры на TypeScript. Замер горячих участков через обёртку с Date.now(), потоковая обработка вместо буферизации всего ответа, постраничная выборка из D1 вместо загрузки всех строк в массив, многослойный кеш из памяти, Cache API и KV. Отдельно про бандл: точечные импорты вместо import * as, ленивая загрузка тяжёлых зависимостей через динамический импорт. Есть шаблоны (templates/performance-middleware.ts, templates/caching-layer.ts, templates/optimized-worker.ts) и скрипты scripts/benchmark.sh и scripts/profile-worker.sh.

Держите бандл меньше 1MB и помните про лимиты CPU: 10ms на бесплатном плане, 30ms на платном, 50ms на unbound. Динамические импорты помогают с размером, но сами по себе добавляют задержку на первом вызове — это повод проверить, что именно грузится лениво. Скилл советует подгружать отдельные справочники по задаче: references/cpu-optimization.md, references/memory-optimization.md, references/caching-strategies.md, references/bundle-optimization.md, references/cold-starts.md.

Какие задачи решает

  • уложиться в лимит CPU на бесплатном или платном плане
  • сократить холодный старт воркера
  • снять давление на память при обработке больших ответов
  • добавить кеш поверх повторяющихся вычислений
  • уменьшить бандл перед деплоем

Примеры запросов агенту

  • Мой воркер падает с ошибкой CPU limit exceeded — помоги найти горячий путь
  • Ответы отдаются медленно, добавь потоковую обработку вместо буферизации
  • Бандл разросся, покажи, как уменьшить его и ускорить холодный старт

Как установить cloudflare-workers-performance

1Через Skills CLI (Vercel)

npx skills add secondsky/claude-skills --skill cloudflare-workers-performance -a claude-code

2Вручную: положить файлы

~/.claude/skills/cloudflare-workers-performance/SKILL.md

Папка скилла целиком; для одного проекта — .claude/skills/cloudflare-workers-performance/

По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов

Из того же набора89

maz-ui Скилл даёт агенту знание Maz-UI v4: 50+ компонентов, composables, директивы и темы для Vue 3 и Nuxt 3. Пригодится, когда собираете формы, диалоги или таблицы. CX Codex +1 369установок woocommerce-dev-cycle Скилл ведёт по циклу разработки WooCommerce: запускает тесты, чинит стиль кода и разбирает ошибки линтинга. CX Codex +1 361установок woocommerce-copy-guidelines Скилл задаёт правила написания пользовательских текстов в WooCommerce: подписи кнопок, метки полей, сообщения и документация. Пригодится, когда интерфейс магазина пишут несколько человек. CX Codex +1 363установок cloudflare-workers-testing Скилл для написания тестов Cloudflare Workers на Vitest с реальными биндингами D1, KV, R2 и Durable Objects. Пригодится, когда тесты падают на моках или не видят окружение. CX Codex +1 325установок nuxt-seo Скилл по восьми модулям Nuxt SEO v5: robots.txt, карты сайта, OG-картинки, Schema.org и метатеги. Пригодится, когда SEO надо настроить в Nuxt-проекте. CX Codex +1 324установок cloudflare-workers-runtime-apis Скилл по рантайм-API Cloudflare Workers: Fetch, Streams, Crypto, Cache, WebSockets и кодирование текста. Пригодится, когда воркер ловит ошибки на запросах, потоках или кэше. CX Codex +1 311установок cloudflare-workers-frameworks Подсказывает агенту, как поднять Hono, Remix, Next.js, Astro, SvelteKit, Qwik или Nuxt на Cloudflare Workers, и разбирает типовые ошибки сборки. CX Codex +1 309установок cloudflare-workers-observability Скилл для наблюдаемости Cloudflare Workers: структурированные логи, Analytics Engine, Tail Workers, метрики и алерты. Пригодится, когда воркер падает в проде, а логов не видно. CX Codex +1 302установок

Похожие

cloudflare-workers devops-skills Скилл для работы с Cloudflare Workers: помогает писать и деплоить edge-функции через Wrangler. Пригодится, если делаете API, cron-задачи или middleware. CX Codex +1 314установок cloudflare-development Mindrally Скилл с правилами разработки на edge-платформе Cloudflare: Workers, Pages, KV, D1, R2 и Durable Objects. Пригодится, когда агент пишет код для воркеров или настраивает wrangler.toml. CX Codex +1 689установок cloudflare-email-service cloudflare Скилл для работы с Cloudflare Email Sending и Email Routing: помогает настроить отправку и приём писем в Workers. CX Codex +1 102 300установок nextjs-on-cloudflare cloudflare Скилл для развёртывания Next.js приложений на Cloudflare Workers через vinext. Используй для новых проектов, миграции существующих приложений или выбора между vinext и OpenNext. CX Codex +1 42 800установок cloudflare официальный Cloudflare Скилл для работы с платформой Cloudflare: помогает агенту выбрать нужный продукт и свериться с документацией вместо устаревших знаний. CX Codex GP ChatGPT 7установок cloudflare-d1 alinaqi Помогает агенту писать код под Cloudflare D1: схема Drizzle, миграции через Wrangler и воркер на Hono. Пригодится, когда проект уже крутится на Workers. CX Codex +1 311установок

Рядом в теме «Облака: AWS, Azure, GCP»

Всё по теме «Облака: AWS, Azure, GCP» →

Вопросы о cloudflare-workers-performance

Как установить cloudflare-workers-performance в Claude?

Выполните npx skills add secondsky/claude-skills --skill cloudflare-workers-performance -a claude-code. Скилл появится в ~/.claude/skills/cloudflare-workers-performance/SKILL.md.

Что делает cloudflare-workers-performance?

Подсказывает, как ускорить Cloudflare Workers: оптимизация CPU, работа с памятью, кеширование и уменьшение размера бандла. Плюс разбор типичных ошибок вроде превышения лимита CPU и медленного холодного старта.

Какие лимиты CPU учитывает скилл?

10ms на бесплатном плане, 30ms на платном и 50ms на unbound. От этих значений зависит, какие приёмы оптимизации имеет смысл применять.

Исходный текст

SKILL.md · MIT
---
name: cloudflare-workers-performance
description: Cloudflare Workers performance optimization with CPU, memory, caching, bundle size. Use for slow workers, high latency, cold starts, or encountering CPU limits, memory issues, timeout errors.
license: MIT
---

# Cloudflare Workers Performance Optimization

Techniques for maximizing Worker performance and minimizing latency.

## Quick Wins

```typescript
// 1. Avoid unnecessary cloning
// ❌ Bad: Clones entire request
const body = await request.clone().json();

// ✅ Good: Parse directly when not re-using body
const body = await request.json();

// 2. Use streaming instead of buffering
// ❌ Bad: Buffers entire response
const text = await response.text();
return new Response(transform(text));

// ✅ Good: Stream transformation
return new Response(response.body.pipeThrough(new TransformStream({
  transform(chunk, controller) {
    controller.enqueue(process(chunk));
  }
})));

// 3. Cache expensive operations
const cache = caches.default;
const cached = await cache.match(request);
if (cached) return cached;
```

## Critical Rules

1. **Stay under CPU limits** - 10ms (free), 30ms (paid), 50ms (unbound)
2. **Minimize cold starts** - Keep bundles < 1MB, avoid dynamic imports
3. **Use Cache API** - Cache responses at the edge
4. **Stream large payloads** - Don't buffer entire responses
5. **Batch operations** - Combine multiple KV/D1 calls

## Top 10 Performance Errors

| Error | Symptom | Fix |
|-------|---------|-----|
| CPU limit exceeded | Worker terminated | Optimize hot paths, use streaming |
| Cold start latency | First request slow | Reduce bundle size, avoid top-level await |
| Memory pressure | Slow GC, timeouts | Stream data, avoid large arrays |
| KV latency | Slow reads | Use Cache API, batch reads |
| D1 slow queries | High latency | Add indexes, optimize SQL |
| Large bundles | Slow cold starts | Tree-shake, code split |
| Blocking operations | Request timeouts | Use Promise.all, streaming |
| Unnecessary cloning | Memory spike | Only clone when needed |
| Missing cache | Repeated computation | Implement caching layer |
| Sync operations | CPU spikes | Use async alternatives |

## CPU Optimization

### Profile Hot Paths

```typescript
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);
}
```

### Optimize JSON Operations

```typescript
// For large JSON, use streaming parser
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;
}
```

## Memory Optimization

### Avoid Large Arrays

```typescript
// ❌ Bad: Loads all into memory
const items = await db.prepare('SELECT * FROM items').all();
const processed = items.results.map(transform);

// ✅ Good: Process in batches
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;
  }
}
```

## Caching Strategies

### Multi-Layer Cache

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

// Layer 1: In-memory (request-scoped)
const memoryCache = new Map<string, unknown>();

// Layer 2: Cache API (edge-local)
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}` }
      })
    );
  }
};

// Layer 3: KV (global)
// Use env.KV.get/put
```

## Bundle Optimization

```typescript
// 1. Tree-shake imports
// ❌ Bad
import * as lodash from 'lodash';

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

// 2. Lazy load heavy dependencies
let heavyLib: typeof import('heavy-lib') | undefined;

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

## When to Load References

Load specific references based on the task:

- **Optimizing CPU usage?** → Load `references/cpu-optimization.md`
- **Memory issues?** → Load `references/memory-optimization.md`
- **Implementing caching?** → Load `references/caching-strategies.md`
- **Reducing bundle size?** → Load `references/bundle-optimization.md`
- **Cold start problems?** → Load `references/cold-starts.md`

## Templates

| Template | Purpose | Use When |
|----------|---------|----------|
| `templates/performance-middleware.ts` | Performance monitoring | Adding timing/profiling |
| `templates/caching-layer.ts` | Multi-layer caching | Implementing cache |
| `templates/optimized-worker.ts` | Performance patterns | Starting optimized worker |

## Scripts

| Script | Purpose | Command |
|--------|---------|---------|
| `scripts/benchmark.sh` | Load testing | `./benchmark.sh <url>` |
| `scripts/profile-worker.sh` | CPU profiling | `./profile-worker.sh` |

## Resources

- Performance: https://developers.cloudflare.com/workers/platform/performance/
- Limits: https://developers.cloudflare.com/workers/platform/limits/
- Caching: https://developers.cloudflare.com/workers/runtime-apis/cache/

© secondsky · MIT · secondsky/claude-skills

Смотрите также

Спонсоры проекта

Компании, которые помогают держать аналитику открытой