К основному содержимому

Cloudflare Images и Stream: хранение и раздача медиафайлов

Cloudflare · 29.09.2026

Зачем нужны Cloudflare Images и Stream

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

Оба сервиса решают проблему, знакомую владельцам VPS на ZevsHost: диск заполняется медиафайлами, а нагрузка на исходящий трафик растёт с каждым посетителем. Images и Stream переносят раздачу на edge-серверы Cloudflare, а на origin остаётся только один оригинал файла.

Чем Cloudflare Images отличается от Cloudflare Stream

Разница не только в типе файла, но и в способе обработки и раздачи готового результата конечному пользователю.

ПараметрCloudflare ImagesCloudflare Stream
Тип файлаJPEG, PNG, WebP, GIF, AVIFMP4, MOV, ролики длиной до нескольких часов
ОбработкаРесайз, обрезка, смена формата на летуТранскодинг в HLS и DASH, несколько битрейтов
РаздачаЧерез image delivery URL с вариантамиЧерез встраиваемый плеер или прямые манифесты

Как загрузить изображение через API

Токен создаётся в Dashboard в разделе My Profile → API Tokens с правами Images:Edit. Дальше загрузка выполняется одним запросом:

curl -X POST \
  -F file=@photo.jpg \
  -H "Authorization: Bearer $CF_API_TOKEN" \
  https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/images/v1

Ответ содержит идентификатор изображения и базовый URL для раздачи. Для массовой загрузки каталога товаров не стоит гонять curl вручную — удобнее завести автоматизацию, как описано в статье про управление Cloudflare через API и Terraform.

Варианты изображений: ресайз без перезагрузки оригинала

Один загруженный оригинал раздаётся в разных размерах через параметры в URL, без создания копий файла на диске:

  • width и height — целевые размеры в пикселях
  • fit — scale-down, contain, cover, crop или pad
  • quality — число от 1 до 100, влияет на размер файла
  • format — auto подбирает WebP или AVIF по заголовку Accept браузера
  • sharpen — резкость после ресайза, число от 0 до 10
https://imagedelivery.net/<account_hash>/<image_id>/w=800,quality=80,format=auto

Если нужно добавить водяной знак или подписать URL временным токеном перед выдачей ссылки, это делает Cloudflare Worker, поставленный перед раздачей изображений.

Как загрузить и раздать видео через Stream

Для видео действует та же логика: один запрос на загрузку, дальше Cloudflare сам готовит адаптивные потоки.

curl -X POST \
  -H "Authorization: Bearer $CF_API_TOKEN" \
  -F file=@lesson.mp4 \
  https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/stream

После загрузки Stream нарезает видео на сегменты HLS и DASH и отдаёт идентификатор для встраивания плеера. Ролик доступен сразу в нескольких битрейтах, а браузер зрителя сам выбирает подходящий под скорость соединения.

Лимиты и на что обратить внимание

Перед переносом медиатеки стоит свериться с ограничениями сервисов, чтобы не упереться в них после загрузки сотен файлов:

  • максимальный размер одного изображения — 10 МБ
  • максимальная длина одного видео на Stream — 6 часов
  • хранение тарифицируется отдельно от исходящего трафика на просмотры
  • приватные видео закрываются подписанными URL с ограничением по времени действия

Итог: что сделать перед подключением

Images и Stream снимают с origin-сервера самую тяжёлую часть работы — раздачу медиафайлов, — и делают это без правки кода сайта под каждый размер картинки.

  1. создать API-токен с правами Images:Edit и Stream:Edit
  2. определить набор вариантов ресайза под макеты сайта
  3. настроить водяной знак или подписанные URL для приватного видео
  4. проверить кэширование готовых URL через Cache Rules
  5. сравнить с Cloudflare R2, если файлы нужно хранить без обработки
← Назад в базу знаний Задать вопрос поддержке