- Created by Ksenia Sagmanova on 31 March 2022
Данная опция позволяет настроить отдачу выбранного HTTP-кода для контента, размещенного в CDN. Она полезна, если необходимо, чтобы пользователям при запросе определенного файла отдавался, например, код 403. Или для настройки редиректа на другой URL.
Функция доступна в дополнительных настройках СDN-ресурса и разделе Правила.
Чтобы активировать данную опцию:
- перейдите в дополнительные настройки
- перейдите в раздел Контент
- включите опцию "Задать код ответа"
- в поле Код ответа введите код
- укажите URL для редиректа или текст для кода ответа, если это необходимо
Данная функция необходима для ускорения кеширования файлов больших размеров. Файл будет запрашиваться и храниться в кеше частями по 10 МБ. Источник должен поддерживать HTTP Range request.
Пример
При одновременном запросе пользователями разных частей одного файла ближайший CDN-сервер загрузит с источника разные части файла в кеш, используя множество одновременных потоков и соберет их воедино в кеше.
Если запрос был "Range: bytes=123537047-123545047", то с источника CDN заберет в диапазоне bytes 115343360-125829119 и закеширует эту часть файла. При этом пользователю отдастся запрашиваемый им диапазон 123537047-123545047.
Особенности опции:
- настройка применяется ко всем файлам CDN-ресурса, что приведет к увеличению нагрузки на сервер-источник
для корректной работы опции необходимо чистить кеш после каждого обновления файла на источнике
если для ресурса используется группа источников, файлы на каждом из используемых источников должны содержать одинаковые заголовки Content-Length и Etag
Настройка Rewrite используется для изменения и перенаправления пути запроса. Опция работает в соответствии с конфигурацией nginx.
Для активации опции:
- перейдите в дополнительные настройки
- перейдите в раздел Контент
- включите опцию "Включить Rewrite"
- в поле Rewrite body после активации опции отображаются значения, заданные по умолчанию
- очистите поле и введите через пробел две директивы:
- путь, к которому будет применяться Rewrite
- на что должен меняться указанный путь; используйте регулярные выражения
Настройка Rewrite
Пример
Есть необходимость применить Rewrite ко всему ресурсу, чтобы CDN обращался за контентом в определенную папку на вашем источнике.
Предположим, ваш источник example.com. Необходимо забирать контент из директории example.com/media/.
В таком случае пропишите в поле Rewrite следующие параметры: /(.*) /media/$1, где:
- /(.*) — к чему применяется Rewrite; группа переменных (.*) позволяет применить Rewrite ко всем возможным вариантам того, что будет идти после / в example.com/
- /media/ — директория, в которую будут уходить запросы
- $1 — порядковый номер группы переменных; если групп больше одной, то следующие номера будут $2, $3 и так далее
Флаг break применяется к опции по умолчанию и не отображается в поле. Применить к опции другие флаги можно через API.
Для получения подробной информации об API-документации обратитесь в службу технической поддержки #CloudMTS по адресу support@cloud.mts.ru.
Если требуется, чтобы конечные пользователи получали контент в сжатом виде, возможно настроить сжатие на источнике или воспользоваться предложенными ниже опциями сжатия на CDN.
Сжатие на CDN: GZip и Brotli
CDN-серверы поддерживают Сжатие GZip и Сжатие Brotli. С источника всегда будет запрашиваться несжатая версия файла.
По умолчанию эти опции выключены. Для включения:
- перейдите дополнительные настройки
- перейдите в раздел Контент
- выберите один из вариантов сжатия файлов
- включите нужную опцию
- сохраните изменения
Сжатие GZip
Gzip — метод сжатия данных. Степень сжатия при использовании GZip обычно 70%, но может достигать и 90%.
Расширения файлов, поддерживающих GZip-сжатие:
- application/javascript
- application/json
- application/x-javascript
- application/xml
- application/xml+rss
- text/css
- text/html
- text/javascript
- text/plain
- text/xml
- image/svg+xml
Форматы файлов изображений (jpeg, jpg, png), а также видеоролики, PDF-файлы и другие двоичные форматы уже сжаты. Использование GZip на них не предоставляет дополнительных преимуществ, а наоборот увеличивает размер файлов - растет нагрузка на их распаковку.
Сжатие Brotli
Brotli – алгоритм сжатия данных, по степени сжатия в несколько раз превосходит GZip метод. Минимальный размер сжимаемого файла - 128 байт.
При активации этой опции сжатие выполняется на шилдинге источника. Даже если опция сжатия включена, сжатие не произойдет, если для ресурса не используется прекеш-сервер. Подробнее об этом написано в пункте Шилдинг источника. Активация и настройка шилдинга источника данной статьи.
В поле Типы данных возможно самостоятельно задать типы сжимаемого контента. Некоторые расширения уже выбраны по умолчанию:
- application/javascript
- application/json
- application/x-javascript
- application/xml
- application/xml+rss
- text/css
- text/html
- text/javascript
- text/plain
- text/xml
Также доступны:
- application/vnd.ms-fontobject
- application/x-font-ttf
- image/x-icon
- image/svg+xml
Возможно добавлять и удалять все указанные выше типы. Исключением является «text/html», данный тип выбран всегда, его удаление невозможно.
Сжатие Brotli + Сжатие GZip
Возможна активация обоих вариантов сжатия контента одновременно.
Метод сжатия данных будет зависеть от:
- типа обрабатываемого файла
- настроек опции «Сжатие Brotli»
- поддерживает ли браузер пользователя тот или иной тип сжатия
Если выбранные MIME-типы в опции «Сжатие Brotli» совпадают с расширениями файлов по умолчанию для опции «Сжатие GZip», указанными выше, алгоритм сжатия Brotli будет иметь больший приоритет, но только в том случае, если браузер пользователя поддерживает такой тип сжатия.
Если в настройках опции «Сжатие Brotli» будет отсутствовать MIME-тип, который поддерживается методом сжатия Gzip, файлы данного расширения будут сжиматься по методу GZip.
Пример
Активированы обе опции. В Типах Данных опции «Сжатие Brotli» указали text/html и application/json.
При запросе пользователем файла, например, с расширением text/html, при обращении к CDN браузер отправляет соответствующие заголовки с перечислением поддерживаемых форматов сжатия.
Если браузер пользователя поддерживает сжатие по алгоритму Brotli, контент будет сжат на шилдинге источника, так как несмотря на поддержку этих MIME-типов методом сжатия GZip, алгоритм сжатия Brotli имеет больший приоритет.
При запросе пользователем файла с расширением application/x-javascript данные будут сжаты на CDN по методу GZip, так как в параметрах опции «Сжатие Brotli» в данном случае такое расширение отсутствует.
Описанный вариант взаимодействия опций «Сжатие Brotli» и «Сжатие GZip» осуществим только при наличии включенной опции «Шилдинг».
Взаимодействие основных настроек сжатия и правил ресурса
При активной опции «Запрашивать сжатие на источнике» в основных настройках ресурса активировать опции «Сжатие Gzip», «Сжатие Brotli» или обе опции в правилах ресурса невозможно.
- чтобы сжатие всех файлов на CDN происходило по выбранному методу сжатия и для попадающих под правила файлов запрашивалось сжатие на источнике, необходимо:
- в основных настройках ресурса включить опции «Сжатие Gzip», «Сжатие Brotli» или обе опции
- в правилах ресурса установить включить опцию «Запрашивать сжатие на источнике»
- чтобы настроить сжатие всех файлов на источнике и установить сжатие по одному из методов для попадающих под правила файлов, необходимо:
- в основных настройках ресурса включить опцию «Запрашивать сжатие на источнике»
- в настройках правила:
- добавить опцию «Запрашивать сжатие на источнике», оставить ее выключенной
- добавить и включить необходимый метод сжатия: «Сжатие Gzip», «Сжатие Brotli» или обе опции
Cжатие на источнике
Опция «Cжатие на источнике» позволяет сократить полосу между сервером-источником и CDN-серверами и увеличить скорость отдачи контента благодаря сокращению времени на сжатие файла на стороне CDN.
Активация опции «Запрашивать сжатие на источнике» доступна в настройках ресурса раздела Контент.
Если данная опция активна, CDN-серверы забирают сжатый контент с сервера-источника.
Cжатие на серверe-источнике должно происходить по методу GZip.
Если на сервере-источнике сжатие происходит по методу Brotli, CDN забирает несжатый контент, если не настроено иного.
Если на сервере-источнике настроено сжатие Brotli, но требуется, чтобы CDN забирал сжатый контент, необходимо настроить источник таким образом, чтобы при запросе файла Gzip он отправлял файл Brotli.
Особенности опции
- CDN-серверы не будут разжимать контент при доставке пользователю даже при условии, если браузер клиента не поддерживает сжатие; такие случаи маловероятны
- опция не работает совместно с опцией «Сжатие GZip», так как они являются взаимоисключающими
Сжатие без настроек на CDN
Источник поддерживает сжатие
Если требуется, чтобы через CDN отдавался сжатый или несжатый контент в зависимости от запроса, поступившего от конечного пользователя, отключите все настройки сжатия в личном кабинете и выполните некоторые настройки на источнике.
На источнике должны быть настроены два HTTP-заголовка: Vary: Accept-Encoding и Content-Encoding.
При обработке запроса от конечных пользователей CDN-серверы проверяют HTTP-заголовок Accept-Encoding. Если в заголовке содержится gzip и/или deflate, br, означающие возможность браузера обрабатывать сжатый контент, то CDN запросит с источника сжатую версию файла. Если таких директив нет, сервер отдаст несжатый файл.
Если на сервере не настроен заголовок Vary: Accept-Encoding, в CDN закешируется файл, который был запрошен первым (сжатый или нет). Это может вызывать сложности с отображением контента у конечного пользователя.
Пример
Нужно чтобы из CDN был отдан несжатый файл, а в кеше только сжатый. В таком случае пользователь получит сжатый файл, а браузер не сможет его отобразить.
Если заголовок Vary: Accept-Encoding настроен, в кеше CDN-серверов хранятся две версии файла.
Источник не поддерживает сжатие
В кеше CDN-серверов будет храниться несжатая версия файла. Вне зависимости от того, запрашивает ли конечный пользователь сжатие или нет, из кеша будет отдаваться несжатый файл.
- No labels