INTEGRITY Документация

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 меняет лимиты и состав тарифов без предупреждения, поэтому проверяйте значение в источнике, прежде чем закладывать его в архитектуру.

Обзор

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

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

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

Архитектура

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 рассматривается как возможность, а не как строка подключения или встроенные учётные данные.

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

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

Возможности

ВозможностьПоведениеСтатус и уровеньИсточник
Среда выполнения JavaScript и TypeScriptОсновной поддерживаемый runtime, который выполняется в V8 isolates и использует стандартные веб-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 по лимитам платформы, проверено 2026-08-31 (https://developers.cloudflare.com/workers/platform/limits/). Они могут изменяться без предупреждения, поэтому их следует перепроверять, прежде чем полагаться на них в решении.

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

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

Ограничения сервиса хранения данных, данные получены 2026-08-28:

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

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

УровеньВключено
Free100,000 запросов в день, 10 мс процессорного времени на вызов, 3 MB сжатого размера Worker, 50 вложенных запросов на вызов, с отдельными бесплатными лимитами для KV, D1 и R2.
Workers PaidCloudflare устанавливает минимальную стоимость в 5 долларов США в месяц, включая 10 миллионов запросов и 30 миллионов CPU-миллисекунд в месяц, а использование сверх этих объёмов оплачивается за каждый запрос и каждую CPU-миллисекунду. Повышает время CPU по умолчанию до 30 секунд, размер Worker до 10 МБ и число HTTP-подзапросов до 1 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. Явно объявляйте bindings и указывайте дату совместимости, не полагаясь на значение по умолчанию.
  2. Перенесите все учетные данные в Worker secrets и убедитесь, что в репозитории или конфигурационном файле их не осталось.
  3. Настройте отдельные стейджинг- и продакшен-окружения с разными ресурсами хранения, чтобы ошибка при развёртывании не могла привести к записи в продакшен-данные.
  4. Настройте CI так, чтобы развёртывание выполнялось пайплайном с ограниченным по правам API-токеном, а не с рабочей станции разработчика.
  5. Добавьте ограничение частоты запросов перед общедоступными маршрутами Worker, а также кеширование там, где это допускает ответ, чтобы ограничить объем запросов и, соответственно, расходы.
  6. Оцените стоимость модели относительно ожидаемого трафика, используя страницы тарификации для каждого сервиса, включая классы операций хранения, и настройте оповещения о выставлении счетов.

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

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

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

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

Отслеживайте время 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 может выступать источником для CDN и лежит в основе Cache Reserve, поэтому объектное хранилище, кеширование и вычисления работают вместе без обычного сервера-источника.

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

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

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

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

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

Что на самом деле измеряет ограничение CPU? Время, затраченное на выполнение кода, а не общая длительность запроса. Ожидание subrequest не расходует 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