Термин

Byte-range request

Короткое определение

HTTP-запрос, запрашивающий определённый диапазон байтов ресурса с помощью заголовка `Range:` (RFC 9110, июнь 2022). Используется в HLS для получения суб-кусков CMAF-файла без необходимости иметь отдельный URL для каждого.

Byte-диапазонный запрос выглядит как `GET /segment.m4s` с заголовком `Range: bytes=0-200000` – серверу просят передать только первые 200001 байт. В ответ сервер возвращает HTTP 206 Partial Content и запрошенные байты. CDN кэширует файл один раз и отвечает на byte-диапазонные запросы из кэша, не обращаясь к origin. Этот механизм появился ещё в HTTP/1.1 (RFC 2616, 1999) и поддерживается повсеместно.

В стриминге byte-range-fetching – это способ фрагментации CMAF-сегмента без увеличения количества URL. Шестисекундный сегмент может состоять из 30 CMAF-чанков по 200 мс; вместо 30 отдельных URL (и 30 записей в кэше) пакер публикует один URL, а HLS `EXT-X-PART` ссылается на байтовые диапазоны внутри него. CDN кеширует один файл, а плеер запрашивает нужные фрагменты.

Второе крупное применение – DASH-профиль SegmentBase, в котором весь VOD-ассет хранится в одном файле, а плеер загружает сегменты по байтовым диапазонам, вычисляя смещения из SIDX (segment index). Это упрощает структуру каталога – вместо тысяч `.m4s`-файлов на каждый вариант качества достаточно одного MP4-файла – ценой более сложной логики в плеере. CDN-ы нативно поддерживают byte-range-запросы – современные кеши эффективно обрабатывают даже несколько перекрывающихся диапазонов от параллельных клиентов.

Считаете параметры для своего продукта?

Поможем собрать энкодер-леддер и посчитать стоимость доставки – до старта разработки.