Skip to content

Оптимизация контента

Сегментация и сжатие контента

Сервис CDN поддерживает опции для оптимизации доставки контента:

  • сжатие GZip в CDN (доступно только при включенном кешировании);
  • оптимизация доставки больших файлов (сегментация или слайсинг);
  • сжатие на источнике.

Важно

Опция Сжатие GZip в CDN совместима с опцией Оптимизировать доставку больших файлов.

Опция Сжатие на источнике несовместима с опциями Сжатие GZip в СDN и Оптимизировать доставку больших файлов.

Применение опций уменьшит исходящий трафик с CDN-серверов, что сэкономит ваши средства. Вы можете настроить опции как при создании, так и при редактировании ресурса.

Сжатие GZip в CDN

Контент с CDN-серверов может передаваться клиентам в сжатом формате GZip. Степень сжатия варьируется от 70 до 90 процентов и зависит от формата исходного файла. Уровень сжатия — 5. Сжатие происходит непосредственно на CDN-серверах. Минимальный размер файла для сжатия — 128 байт.

Сжимаются файлы следующих MIME-типов (значение HTTP-заголовка Content-Type, получаемого от источника):

  • application/javascript;
  • application/json;
  • application/x-javascript;
  • application/xml;
  • application/xml+rss;
  • image/avif;
  • image/svg+xml;
  • text/css;
  • text/javascript;
  • text/plain;
  • text/xml.

Важно

Контент будет отправлен в сжатом виде, если у клиента есть поддержка GZip (HTTP-заголовок Accept-Encoding: gzip) — иначе файл будет отправлен без сжатия, даже если контент будет сжат на CDN-сервере.

Если вы не установили сжатие GZip при создании ресурса, то очистите кеш CDN, затем активируйте сжатие при редактировании ресурса.

Оптимизация доставки больших файлов

Оптимизация доставки больших файлов реализована в сервисе CDN с помощью механизма сегментирования: файлы загружаются на CDN-серверы сегментами по 10 Мбайт с их последующим сохранением в кеш. Файл будет запрашиваться, кешироваться и передаваться клиенту в несколько потоков по мере необходимости. Если включено кеширование в CDN, перед отправкой клиенту разбитый на сегменты файл будет собран в одно целое.

Важно

Для корректной работы опции источники должны поддерживать частичные GET-запросы с заголовком Range (HTTP Range request).

Если для ресурса используется группа источников, то файлы из разных источников должны иметь в ответе одинаковые заголовки Content-Length и ETag.

Как работает оптимизация доставки файлов на примере:

  1. Потребитель запрашивает 8 Кбайт файла Х размером 100 Мбайт:
    Range: bytes=123537047–123545047
  2. CDN-сервер запросит с источника 10 Мбайт файла Х:
    Range: bytes=115343360–125829119
  3. Если включено кеширование, 10 Мбайт будет закешировано на CDN-сервере.
  4. Потребитель получает запрашиваемый диапазон файла Х:
    123537047–123545047

Сжатие на источнике

При сжатии на источнике CDN-серверы забирают уже сжатый контент. В отличие от опции выше, непосредственно сжатие происходит на источнике, а не на CDN-сервере.

Особенности и ограничения:

  • Файлы должны сжиматься на сервере-источнике по методу GZip.
  • Если браузер потребителя не поддерживает сжатие (не приходит HTTP-заголовок Accept-Encoding: gzip), CDN-серверы не будут разжимать контент.
  • Если на источнике настроен HTTP-заголовок Vary: Accept-Encoding, в кеше CDN-серверов будет сохранено две версии файла — со сжатием и без него; такой вариант хранения позволит избежать некорректного отображения контента у потребителя.

Процесс настройки опции:

  1. На источнике добавьте HTTP-заголовки:
    • Vary: Accept-Encoding,
    • Content-Encoding.
  2. CDN-серверы проверяют HTTP-заголовок Accept-Encoding в запросах клиентов на возможность обработки сжатого контента:
    • gzip,
    • deflate,
    • br.
  3. Если у потребителя поддерживается сжатие, CDN-сервер запросит с источника сжатую версию файла, в противном случае сервер передаст потребителю несжатый файл.

Поддержка WebSocket-соединений

Сервис CDN поддерживает протокол WebSocket: в отличие от HTTP этот протокол устанавливает непрерывное соединение между клиентом и сервером. WebSocket может использоваться при обмене данными в реальном времени, например, в онлайн-чатах технической поддержки.

Вы можете настроить WebSocket как при создании, так и при редактировании ресурса.

Rewrite-правила

Сервис CDN поддерживает перенаправление запросов от CDN-ресурса к источнику с помощью rewrite-правил.

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

Rewrite-правила нельзя задавать для локаций.

Вы можете настроить перенаправление запросов как при создании, так и при редактировании ресурса.