Оптимизация контента
Сегментация и сжатие контента
Сервис 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.
Как работает оптимизация доставки файлов на примере:
- Потребитель запрашивает 8 Кбайт файла
Хразмером 100 Мбайт:Range: bytes=123537047–123545047 - CDN-сервер запросит с источника 10 Мбайт файла
Х:Range: bytes=115343360–125829119 - Если включено кеширование, 10 Мбайт будет закешировано на CDN-сервере.
- Потребитель получает запрашиваемый диапазон файла
Х:123537047–123545047
Сжатие на источнике
При сжатии на источнике CDN-серверы забирают уже сжатый контент. В отличие от опции выше, непосредственно сжатие происходит на источнике, а не на CDN-сервере.
Особенности и ограничения:
- Файлы должны сжиматься на сервере-источнике по методу GZip.
- Если браузер потребителя не поддерживает сжатие (не приходит HTTP-заголовок
Accept-Encoding: gzip), CDN-серверы не будут разжимать контент. - Если на источнике настроен HTTP-заголовок
Vary: Accept-Encoding, в кеше CDN-серверов будет сохранено две версии файла — со сжатием и без него; такой вариант хранения позволит избежать некорректного отображения контента у потребителя.
Процесс настройки опции:
- На источнике добавьте HTTP-заголовки:
Vary: Accept-Encoding,Content-Encoding.
- CDN-серверы проверяют HTTP-заголовок
Accept-Encodingв запросах клиентов на возможность обработки сжатого контента:gzip,deflate,br.
- Если у потребителя поддерживается сжатие, CDN-сервер запросит с источника сжатую версию файла, в противном случае сервер передаст потребителю несжатый файл.
Поддержка WebSocket-соединений
Сервис CDN поддерживает протокол WebSocket: в отличие от HTTP этот протокол устанавливает непрерывное соединение между клиентом и сервером. WebSocket может использоваться при обмене данными в реальном времени, например, в онлайн-чатах технической поддержки.
Вы можете настроить WebSocket как при создании, так и при редактировании ресурса.
Rewrite-правила
Сервис CDN поддерживает перенаправление запросов от CDN-ресурса к источнику с помощью rewrite-правил.
Принцип действия: вы перенаправляете запросы от CDN-ресурса к источнику, изменив URI запроса. С помощью регулярного выражения находится целевой массив в файловой системе источника и указываются нужные правила формирования пути для этих запросов. Перенаправление может применяться, например, при изменении структуры файлов в бакете, если он используется в качестве источника.
Rewrite-правила нельзя задавать для локаций.
Вы можете настроить перенаправление запросов как при создании, так и при редактировании ресурса.