- tocdepth
2
Правила для HTTP-кеширования
В этом разделе приведены инструкции для более тонкой настройки CDN-сети.
После создания ресурса на странице его редактирования появится вкладка Правила. На этой вкладке доступно редактирование базового правила (которое распространяется на весь ресурс), либо создание индивидуальных правил для какого-либо раздела/пути.
Правила позволяют управлять заголовками, кешированием, CORS и авторизацией.
На этой странице
Основное
Укажите путь до каталога или к конкретному файлу, к которому нужно применить данное правило.
Заголовки
В этом разделе вы можете указать специальные заголовки, которые требуется добавить при обращении к источнику данных (вид to origin), либо при раздаче контента конечным пользователям (вид to customer).
Кеширование
В этом разделе вы можете указать время кеширования в зависимости от кода ответа (2xx, 3xx, 4xx, 5xx), установить игнорирование заголовков управления кешированием (Expires
и Cache-Control
), а также включить учет query string при кешировании.
CORS
В определенных случаях обращение к контенту, размещенному в сети CDN, расценивается браузером как кросс-доменный запрос и блокируется. В первую очередь это касается шрифтов. Проблема решается выставлением заголовков CORS (Cross-Origin Resource Sharing) для кешируемых объектов.
Есть два варианта решения проблемы:
Вы выставляете заголовки CORS на сервере-источнике и отключаете их проверку в нашей сети.
Вы настраиваете проверку CORS через наш личный кабинет.
Настройка через личный кабинет
Механизм проверки CORS, предоставляемый для конфигурации, основывается на работе нашего собственного модуля. Его функциональность базируется на рекомендациях W3C.
Основные принципы работы модуля:
При включенном CORS заголовки
Access-Control-*
от ориджина не учитываются ни при каких условиях и удаляются из ответа.Запрос без заголовка
Origin
не является кросс-ресурсным и заголовкиAccess-Control-*
клиенту не передаются.Заголовки
Access-Control-Request-*
не добавляются нашим модулем ни при каких условиях, т.к. это входящие заголовки запроса, формируемые браузером, как иOrigin
.При наличии заголовка
Origin
его содержимое проверяется на соответствие с заданным пользователем. В случае отсутствия ограничений заголовокAccess-Control-Allow-Origin
ответа будет содержать «*», в случае наличия ограничений и попадания Origin в список разрешенных ACAO будет содержатьhttp(s?)://$http_origin
в любом другом случае ответ заголовковAccess-Control-*
содержать не будет.Заголовок
Access-Control-Expose-Headers
добавляется в том случае, если такие заголовки заданы пользователем. По умолчанию мы проставляем разрешение на доступ к Content-Range для работы range-запросов (для плееров на JS).Заголовок
Access-Control-Allow-Credentials
(ACAC) выставляется в соответствии с заданным пользователем.Заголовки
Access-Control-Allow-Methods
,Access-Control-Allow-Headers
иAccess-Control-Max-Age
проставляются только в ответе на запрос с методомOPTIONS
, который обрабатывается локально и на ориджин не передается.Заголовок
Access-Control-Allow-Methods
выставляется равным содержимому заголовкаAccess-Control-Request-Method
в случае его наличия и попадания его содержимого в список простых запросов (GET, HEAD, POST), либо в список, заданный пользователем. Если метод не попадает в список разрешенных — ответ заголовковAccess-Control-*
содержать не будет. В случае отсутствия в запросеAccess-Control-Request-Method
Access-Control-Allow-Methods
не выставляется.Access-Control-Allow-Headers
выставляется равным содержимому заголовкаAccess-Control-Request-Headers
в случае его наличия, наличия заголовка запросаAccess-Control-Request-Method
и попадания всех заголовков в список простых (Accept
,Accept-Language
,Content-Type
,Content-Language
) либо в список, заданный пользователем. Если хотя бы один заголовок не попадает в список разрешенных — ответ заголовковAccess-Control-*
содержать не будет. В случае отсутствия в запросеAccess-Control-Request-Method
иAccess-Control-Request-Headers
Access-Control-Allow-Headers
не выставляется.Заголовок
Access-Control-Max-Age
выставляется в соответствии с заданным пользователем, по умолчанию не выставляется.Дополнительные заголовки ответа, определяемые клиентом, добавляются/переопределяются после отработки модуля CORS и, например,
Access-Control-Alow-Origin: *
в секции заголовков будет добавлен вне зависимости от результатов работы модуля CORS.
Процесс конфигурации модуля
По умолчанию проверка CORS активна. В случае отключения CORS авторизации все preflight запросы будут перенаправляться на ваш ориджин.
Заголовки, описанные выше и выставленные на ориджине, не будут затронуты и передадутся конечным пользователям без изменений.
Вы можете внести корректировки в работу модуля, задав следующие параметры:
Разрешенные домены
Значение можно задавать одним из следующих способов:
example.com
— точное соответствие;
\*.example.com
— все поддомены example.com, не включая example.com;
.example.com
— все домены 3го уровня, включая example.com;
~a:raw-latex:`\d+`\\.example.com
— регулярное выражение.
Безопасные заголовки запроса
По умолчанию разрешены Cache-Control
, Content-Language
, Content-Type
, Expires
, Last-Modified
, Pragma
.
Вы можете дополнить этот список своими заголовками.
Заголовки, доступные API верхнего уровня (Expose Headers)
По умолчанию разрешены Cache-Control
, Content-Language
, Content-Type
, Expires
, Last-Modified
, Pragma
.
Вы можете дополнить этот список своими заголовками.
Безопасные методы
По умолчанию разрешены GET, HEAD, POST. Вы можете дополнить этот список своими методами.
Заголовок Access-Control-Allow-Credentials
Cookies, сессионность, авторизация несовместимы с кеширующими сервисами ввиду логики своей работы.
Однако, если у вас возникает необходимость выставить заголовок Access-Control-Allow-Credentials
, вы можете сделать это.
Время жизни ответа Preflight запроса
Время, в течение которого результат ответа Preflight запроса считается актуальным.
Внимание
Вне зависимости от включения/выключения CORS авторизации и результатов ее работы вы можете вручную переопределить любой из заголовков в ответе конечным пользователям. Для этого укажите его название и желаемое значение в секции Заголовки. Значение авторизационных заголовков будет заменено на указанное вами после этапа проверки CORS.
Ограничения раздачи
В этом разделе вы можете установить ограничения раздачи контента в зависимости от страны и региона, IP адреса, заголовка referer или User-Agent.
Авторизация
В этом разделе вы можете настроить локальную (на основе подписи), либо внешнюю авторизацию для ограничения доступа к вашему контенту.
Сжатие Brotli
Данная опция позволяет включить сжатие brotli.
Brotli — это алгоритм с открытым исходным кодом, используемый для сжатия данных. Он использует словарь с часто встречающимися последовательностями строк в текстовых файлах (например, .css, .js), что позволяет достичь для них в среднем на 20% большей степени сжатия в сравнении с gzip.
Brotli может подключаться как для всего ресурса в целом, так и по правилам для конкретных путей через интерфейс личного кабинета. Работа алгоритма Brotli возможна только по HTTPS, так как браузеры не поддерживают Brotli c HTTP.
Сжатие возможно для следующих типов файлов
application/javascript
application/json
application/vnd.apple.mpegurl
application/vnd.ms-fontobject
application/x-font-opentype
application/x-font-truetype
application/x-font-ttf
application/x-javascript
application/xml
application/xml+rss
font/eot - font/opentype
font/otf - image/svg+xml
image/vnd.microsoft.icon
image/x-icon
text/compressible
text/css
text/javascript
text/xml
Для корректной работы сжатия браузер должен отправлять заголовок Accept-Encoding: br
(поддерживается в браузерах на базе Chrome 49+, Firefox 44+, Opera 36+).
Конвертация видео
Активируйте опцию, если видео имеет формат MP4-файла и его необходимо раздавать по стриминговым протоколам HLS, MSS или MPEG-DASH.
Опция может быть включена для всего ресурса, либо для определенного пути (правила).
Внимание
Опция недоступна для MP4-файлов длительностью менее 10 секунд.
Для этой услуги не поддерживается контейнер Fragmented MP4. Проверить контейнер файла вы можете с помощью команды
MP4Box -info test.mp4
Описание запросов для просмотра MP4-файлов с использованием стриминговых протоколов можно найти на вкладке «Инструкция по настройке» на странице редактирования ресурса в личном кабинете.
Была ли статья полезной?
для Dev & Test