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