Перейти к содержимому

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

Последнее обновление

Оптимизацию доставки контента можно настроить при создании и при редактировании CDN-ресурса.

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

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

Сжатие GZip в CDN

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

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

  • Сжатие GZip в CDN доступно только при включенном кешировании.
  • Сжатие GZip в CDN несовместимо со сжатием на источнике, при котором файлы сжимает сервер-источник.
  • Минимальный размер файла для сжатия — 128 байт.
  • Контент передается клиенту в сжатом виде, только если запрос содержит HTTP-заголовок Accept-Encoding: gzip. В противном случае файл передается без сжатия.

Сжимаются файлы следующих 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 при создании CDN-ресурса, то очистите кеш CDN, затем активируйте сжатие при редактировании CDN-ресурса.

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

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

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

  • Оптимизация доставки больших файлов несовместима со сжатием на источнике.
  • Для сегментации файлов источники должны поддерживать частичные GET-запросы с заголовком Range (HTTP Range request⁠).
  • Если для CDN-ресурса используется группа источников, то файлы из разных источников должны иметь в ответе одинаковые заголовки Content-Length и ETag.

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

  1. Потребитель запрашивает 8 Кбайт файла Х размером 100 Мбайт:

    Range: bytes=123537047-123545047.

  2. CDN-сервер запросит с источника 10 Мбайт файла Х:

    Range: bytes=115343360-125829119.

  3. Если включено кеширование, 10 Мбайт будет закешировано на CDN-сервере.

  4. Потребитель получает запрашиваемый диапазон файла Х: 123537047-123545047.

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

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

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

  • Сжатие на источнике доступно только при включенном шилдинге для CDN-ресурса.
  • Файлы должны сжиматься на источнике по методу GZip⁠.
  • Сжатие на источнике несовместимо со сжатием GZip в CDN, при котором контент сжимается на CDN-серверах.
  • Сжатие на источнике несовместимо с оптимизацией доставки больших файлов.
  • Если браузер потребителя не поддерживает сжатие (не приходит 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-сервер запросит с источника сжатую версию файла, в противном случае сервер передаст потребителю несжатый файл.

Шилдинг

Шилдинг (shielding, экранирование источника) снижает нагрузку на источник контента за счет дополнительного уровня кеширования. При включенном шилдинге CDN-серверы запрашивают контент через промежуточный сервер. Если запрошенный контент есть в его кеше, сервер передает его без обращения к источнику.

Для корректной работы шилдинга должно быть включено кеширование CDN-ресурса.

Чтобы получить доступ к шилдингу в проекте, обратитесь в техническую поддержку. Доступ предоставляется для всего проекта, после чего вы можете включать шилдинг для отдельных CDN-ресурсов при их создании или редактировании.

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

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

Rewrite-правила

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

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

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