Документация Запланировать пилот

Workers

Cloudflare Workers выполняет код клиентов в изолятах V8 в сети Cloudflare, используя привязки к хранилищу, базам данных, очередям и сервисам инференса. На этой странице описаны модель выполнения, модель привязок, ограничения платформы, влияющие на архитектуру решений, и опубликованные тарифы.

Управление документом

Дана, технический писатель в Integrity
Дана
Технический писатель, Integrity Czech Republic s.r.o.

Управление документом. Поставщик: Cloudflare, Inc. Владелец документа: Dana, технический писатель, Integrity Czech Republic s.r.o. Последняя проверка: 2026-08-31. Снимок содержимого упомянутой документации Cloudflare: 2026-08-28. Приведённые здесь значения сверены с источниками, перечисленными в разделе References, на указанные там даты. Cloudflare меняет лимиты и состав тарифов без предупреждения, поэтому проверяйте значение в источнике, прежде чем закладывать его в архитектуру.

Обзор

В serverless-платформе Cloudflare Workers код развёртывается в сети, а не в конкретном регионе, и каждый вызов обрабатывается в том дата-центре, который принял запрос. Здесь нет инстансов, размер которых нужно подбирать, и нет рантайма, который нужно патчить, но платформа задаёт явные ограничения по CPU, памяти, количеству подзапросов и размеру скрипта, которые определяют, что на ней можно построить. Эти ограничения описаны в разделе «Лимиты и ограничения», и их стоит прочитать до начала проектирования, а не после.

Распространены два способа использования. В первом Worker ставят перед существующим origin-сервером, и он берёт на себя маршрутизацию, изменение заголовков, аутентификацию, персонализацию или кеширование, а само приложение остаётся на месте. Во втором приложение целиком строится на платформе, на её сервисах хранения и базах данных, без традиционного origin-сервера.

Масштабированием управляет платформа в том смысле, что для каждого развёртывания заранее не выделяется ёмкость. При этом масштаб не безграничен: действуют ограничения на процессорное время и память в расчёте на один вызов, на число подзапросов и квоты на уровне сервиса, а на уровне аккаунта есть ограничения параллелизма. Проектируйте систему исходя из документированных лимитов, а не из предположения о неограниченном масштабе.

Архитектура

Worker выполняется в изоляте V8, а не в контейнере или виртуальной машине. Изолят, то есть изолированный контекст выполнения JavaScript, запускается значительно дешевле, чем образ контейнера, и в одном процессе их работает множество. На этом основаны характеристики запуска платформы и экономика развёртывания одного и того же кода в каждой точке присутствия.

Но и запуск изолята не всегда обходится даром. Время холодного старта зависит от размера скрипта, объёма работы на уровне модуля и от того, нужно ли создавать экземпляр модуля WebAssembly. Крупные бандлы и тяжёлая инициализация дают измеримые задержки холодного старта.

Среда выполнения реализует веб-платформенные API: fetch, Request и Response, URL, Web Crypto, потоки, WebSocket и подмножество API Node.js, которое включается флагом совместимости nodejs_compat. Поведение среды выполнения фиксируется датой совместимости и флагами совместимости в конфигурации Worker. Так платформа вносит изменения в поведение, не ломая уже развёрнутый код.

Привязки соединяют Worker с ресурсами платформы. Привязка объявляется в конфигурации и добавляется в объект окружения во время выполнения, поэтому к пространству имён KV, бакету R2, базе данных D1, очереди, пространству имён Durable Object, модели AI или другому Worker код обращается как к возможности (capability), а не через строку подключения или встроенные учётные данные.

Развёртывание через Wrangler CLI публикует новую версию. Gradual Deployments направляют на новую версию заданную долю трафика, то есть во время такого развёртывания одновременно работают две версии. Поэтому в этом режиме развёртывание не атомарно, и код должен корректно работать, когда обе версии обращаются к одним и тем же данным.

В конвейере обработки запросов Cloudflare фазы безопасности выполняются до вызова Worker, поэтому запрос, заблокированный WAF или правилом защиты от DDoS, не доходит до кода Worker.

Возможности

ВозможностьПоведениеСтатус и уровеньИсточник
Среда выполнения JavaScript и TypeScriptОсновная поддерживаемая среда выполнения: работает в изолятах V8 и использует стандартные веб-API.Общедоступно.Runtime API
WebAssemblyМодули, скомпилированные из Rust, C, C++ и других языков и вызываемые из точки входа на JavaScript.Общедоступно.WebAssembly
Python WorkersТочки входа Python, которые выполняются на платформе.Открытая бета. Требуется флаг совместимости python_workers. Не подходит для нагрузки, которой нужна гарантия стабильности.Python Workers
Workers KVГлобальное хранилище «ключ-значение» с согласованностью в конечном счёте, оптимизированное для интенсивного чтения.Общедоступно.Workers KV
R2Объектное хранилище с S3-совместимым API и без платы за исходящий трафик в интернет.Общедоступно.R2
D1Бессерверная база данных SQL на основе SQLite.Общедоступно.D1
Durable ObjectsОбъекты с единственным экземпляром и состоянием, обеспечивающие строгую согласованность, транзакционное хранилище и координацию WebSocket.Общедоступно.Durable Objects
Queues, Cron Triggers, WorkflowsАсинхронная обработка сообщений, запуск по расписанию и надёжное многошаговое выполнение.Перед использованием проверяйте статус отдельной функции в первоисточнике.Queues
Workers AI и VectorizeИнференс на размещённых моделях, а также хранение и поиск по векторным индексам.Статус моделей и функций варьируется, некоторые находятся в бета-версии. Проверяйте статус для каждой модели отдельно.Workers AI
Static Assets и WranglerХостинг статических ресурсов для full-stack приложений: локальная разработка, версионирование, поэтапные развёртывания и наблюдаемость через Wrangler CLI.Общедоступно.Wrangler

Модель настройки

Worker определяется своим кодом и файлом конфигурации, wrangler.jsonc или wrangler.toml. Конфигурация задаёт следующее:

Главное архитектурное решение здесь: какое хранилище выбрать. Это зависит от нужной модели согласованности и характера доступа к данным. Используйте KV для частого чтения данных, которым достаточно согласованности в конечном счёте; D1 для реляционных запросов; R2 для объектов; Durable Objects, если нужна строгая согласованность или координация на уровне отдельной сущности; Queues, если обработку нужно вынести за пределы запроса.

Храните конфигурацию в системе контроля версий вместе с кодом: привязки и настройки совместимости влияют на поведение во время выполнения не меньше, чем исходный код.

Лимиты и ограничения

Значения ниже взяты из документации Cloudflare о лимитах платформы (https://developers.cloudflare.com/workers/platform/limits/), проверено 2026-08-31. Они могут измениться без предупреждения, поэтому перепроверьте их, прежде чем закладывать в решение.

ЛимитFreeПлатный
Запросы100 000 в день, 1 000 в минутуТарификация за запрос, без суточного лимита
Время CPU на вызов10 мс30 с по умолчанию, можно настроить до 5 минут
Память на изолят128 МБ128 МБ
Размер Worker после сжатия3 МБ10 МБ
Подзапросы на один вызов5010 000
Подзапросы к внутренним сервисам на один вызов, например к KV, R2 и D11 000Соответствует настроенному лимиту, по умолчанию 10 000
Одновременные исходящие соединения66
Переменные окружения для каждого Worker64128
Время CPU для Cron Trigger10 мс30 с для интервалов менее 1 часа; 15 минут для интервалов от 1 часа и более

Подзапросом (subrequest) считается любой запрос, который Worker отправляет через Fetch API или к сервису Cloudflare через привязку, поэтому вызовы fetch и вызовы через привязки расходуют общий бюджет одного вызова Worker.

Ограничения сервисов хранения (дата обращения 2026-08-28):

Дополнительные ограничения:

Доступность по планам

УровеньВключено
Free100 000 запросов в день, 10 мс процессорного времени на вызов, 3 МБ сжатого размера Worker, 50 подзапросов на вызов, отдельные бесплатные лимиты для KV, D1 и R2.
Workers PaidCloudflare указывает минимальную плату 5 долларов США в месяц; в неё входят 10 миллионов запросов и 30 миллионов CPU-миллисекунд в месяц, а сверх этих объёмов оплачивается каждый запрос и каждая CPU-миллисекунда. План повышает время CPU по умолчанию до 30 секунд, размер Worker до 10 МБ и число HTTP-подзапросов до 10 000.
Сервисы платформыKV, R2, D1, Durable Objects, Queues, Vectorize и Workers AI тарифицируются отдельно от запросов Workers, у каждого свой бесплатный лимит и цена за единицу. R2 не взимает плату за исходящий трафик в интернет.
EnterpriseДоговорные условия, обязательства по объёму потребления и условия поддержки.

Актуально по состоянию на 2026-08-28 согласно публичной документации Cloudflare о тарифах (https://developers.cloudflare.com/workers/platform/pricing/). Цены, включённые объёмы и лимиты могут изменяться без предупреждения. Рассчитывайте стоимость по страницам тарифов для каждой службы, задействованной в решении, а не только по цене запросов Workers.

Развёртывание

Предварительные требования.

Поэтапная проверка. Реализуйте нагрузку в тестовом окружении с собственными привязками и собственными данными и проверьте её на репрезентативном трафике. Замерьте время CPU на вызов, использование памяти и число подзапросов относительно лимитов тарифного плана, а также поведение при холодном старте на боевом размере бандла, а не на урезанном. Убедитесь, что данные наблюдаемости доходят до нужного назначения, прежде чем направлять на сервис реальный трафик.

Настройка.

  1. Явно объявляйте привязки и указывайте дату совместимости, не полагаясь на значение по умолчанию.
  2. Перенесите все учётные данные в секреты Worker и убедитесь, что в репозитории или конфигурационном файле их не осталось.
  3. Настройте отдельные стейджинг- и продакшен-окружения с разными ресурсами хранения, чтобы ошибка при развёртывании не могла привести к записи в продакшен-данные.
  4. Настройте CI так, чтобы развёртывание выполнялось пайплайном с ограниченным по правам API-токеном, а не с рабочей станции разработчика.
  5. Добавьте ограничение частоты запросов перед общедоступными маршрутами Worker, а также кеширование там, где это допускает ответ, чтобы ограничить объём запросов и, соответственно, расходы.
  6. Оцените стоимость при ожидаемом трафике по страницам тарификации каждого сервиса, включая классы операций хранения, и настройте оповещения о выставлении счетов.

Переключение. Направляйте продакшен-трафик постепенно с помощью Gradual Deployments или маршрута, охватывающего часть путей. Поскольку во время поэтапного развёртывания одновременно обслуживаются две версии, убедитесь, что новая версия совместима с данными, которые записала предыдущая версия, а также с данными, которые предыдущая версия продолжит записывать в процессе развёртывания.

Верификация.

Откат. Верните трафик на предыдущую версию через интерфейс развёртывания или удалите маршрут, чтобы запросы шли напрямую на origin-сервер. Не удаляйте предыдущую версию, а оставьте её развёрнутой, пока новая версия не пройдёт полный цикл трафика. Если формат схемы или данных изменился, перед откатом убедитесь, что предыдущая версия всё ещё может читать данные, записанные новой версией.

Вопросы эксплуатации

Отслеживайте время CPU, частоту ошибок и количество подзапросов по каждому маршруту, а не только объём запросов. Сбои, связанные с лимитами, проявляются под нагрузкой и незаметны в тестовой среде с низким трафиком.

Периодически пересматривайте дату совместимости. Если оставить её неизменной надолго, Worker будет работать со всё более устаревшим поведением среды выполнения; если же изменить дату без тестирования, поведение изменится непредсказуемо. Относитесь к изменению даты как к отдельному изменению, которое требует собственной проверки.

Следите за количеством операций с хранилищем наряду с количеством запросов. Если архитектура выполняет несколько операций с KV или D1 на каждый запрос, стоимость определяется в основном этими операциями, и изменение кеширования может существенно изменить сумму счёта в любую сторону.

Меняйте секреты Worker по графику и храните их только в хранилище секретов платформы. Поскольку привязки заменяют строки подключения, утечка секрета обычно затрагивает учётные данные приложения, а не платформы, но требование о ротации остаётся тем же.

Проектируйте ключи Durable Object так, чтобы нагрузка распределялась между объектами. Если один объект обрабатывает непропорционально большую долю трафика, он становится потолком пропускной способности, который не устраняется никаким масштабированием платформы.

Отказы, которые стоит учитывать заранее: обновление зависимости, из-за которого размер бандла превышает лимит; фрагмент кода, который иногда превышает лимит CPU при больших входных данных; конкуренция за запись в KV по одному ключу; вышестоящий сервис, который работает настолько медленно, что удерживает подзапросы открытыми; и постепенное развёртывание, оставшееся частично выполненным.

Известные особенности

Взаимодействие с другими продуктами

Workers выполняются после фаз безопасности конвейера обработки запросов Cloudflare, поэтому решения WAF, DDoS и Bot Management применяются раньше, чем запускается код Worker. Заблокированный запрос никогда не доходит до Worker.

Workers взаимодействуют с CDN через Cache API и через Cache Rules. Если и Cache Rule, и логика кеширования Worker применяются к одному и тому же запросу, приоритет определяется задокументированной последовательностью обработки трафика.

R2 может служить origin-сервером для CDN и лежит в основе Cache Reserve, поэтому объектное хранилище, кеширование и вычисления работают вместе без традиционного origin-сервера.

Service bindings позволяют одному Worker вызывать другой без обращения по сети, что даёт возможность разбивать приложение на отдельно развёртываемые модули и сохранять низкую задержку вызовов.

Валидацию Turnstile можно выполнять в Worker, то есть на границе сети, а не в бэкенде приложения.

Access можно разместить перед маршрутом Worker, чтобы запросы проходили аутентификацию и авторизацию до вызова, без необходимости реализовывать аутентификацию в самом Worker.

Часто задаваемые вопросы

Требуется ли полная миграция приложения для перехода на Workers? Нет. Обычно Worker ставят на маршрут перед существующим origin-сервером, где он обрабатывает редиректы, логику кеширования, аутентификацию или персонализацию, а само приложение остаётся на месте. Переносить ли само приложение, решается отдельно.

Что на самом деле измеряет ограничение CPU? Время, затраченное на выполнение кода, а не общая длительность запроса. Ожидание подзапроса не расходует время CPU, поэтому запрос может длиться дольше, чем лимит CPU, не превышая его.

Где хранить состояние сессии или координации? Durable Objects, если требуется строгая согласованность или координация на уровне отдельных сущностей. KV обеспечивает согласованность в конечном счёте и ограничивает частоту запросов на ключ, поэтому не подходит для быстро изменяющегося состояния в рамках одного ключа.

Какие части приложения на Workers можно перенести на другую платформу? Код, написанный с использованием стандартных веб-API, данные в R2 через S3-совместимый API, а также схемы и запросы D1 на диалекте SQLite в основном переносимы. Durable Objects и другие платформенно-зависимые сервисы потребуют переработки архитектуры.

Источники

Снимок контента: 2026-08-28.

История изменений

ДатаИзменениеАвтор
2026-08-31Переписано как технический справочник: убран маркетинговый стиль, добавлены таблицы лимитов и доступности по тарифным планам со ссылками на источники, числовые данные сверены с документацией Cloudflare.Команда документации Integrity
2026-08-28Первая публикация.Команда документации Integrity

Содержание

464 страницы, зеркалированные из документации Cloudflare для workers.

Pages

Рекомендации

Workers Cache

CI/CD

Конфигурация

Базы данных

Демонстрации и архитектуры

Примеры

Руководства по фреймворкам

Начало работы

Языки

Локальная разработка

Observability

Платформа

Справочник

Runtime API

Static Assets

Тестирование

Руководства

Версии и развёртывания

Плагин Vite

Wrangler

Запросите бесплатный пилот

Запланировать пилот