- Virtual Infrastructure
- Disaster Recovery
- Кроссплатформенная миграция на базе Киберпротект
- Veeam Agent BaaS
- Veeam Cloud Connect
- Объектное хранилище #CloudMTS
- GPU Workspaces
- VDI Desktops
- Cloud CDN / Медиасервисы
- Диск #CloudMTS
- Техническая поддержка и отзывы
- DBaaS for PostgreSQL
- Containerum Kubernetes
- GPU SuperCloud
Раздел Кеширование
CDN кеширует один и тот же файл с разными куками из HTTP-заголовка запроса Set-Cookie как разные файлы. В результате каждый новый запрос клиента не отдается из кеша, а проксируется на источник. Это снижает процент кешированного трафика.
Включите опцию «Игнорировать Set-Cookie» для того, чтобы кешировать файлы с куками как один объект.
- перейдите в раздел CDN-ресурсы
- перейдите в настройки необходимого ресурса
- перейдите в раздел Кеширование
- включите опцию «Игнорировать Set-Cookie»

Опция позволяет отдавать последний кешированный контент при недоступности сервера-источника при следующих ошибках:
- error (сетевые проблемы)
- timeout
- invalid_header
- updating (обновление кеша)
- http_500
- http_502
- http_503
- http_504
- http_403
- http_404
- http_429.
Устаревший контент будет отдаваться с заголовком X-Cache: Stale. Доступность источника будет проверяться с каждым запросом пользователя. Если работоспособность источника восстановилась, CDN закеширует свежую версию файла. В случае, когда работоспобность источника не восстановилась, CDN-серверы будут отдавать Stale-контент, пока не истечет время жизни кеша.
На момент недоступности сайта в кеше CDN может храниться недостаточно контента для отображения страницы целиком, по этой причине невозможно гарантировать, что все файлы будут отданы корректно. При открытии страницы могут не загрузиться некоторые изображения, таблицы стилей или другой статический контент.
- перейдите в раздел CDN-ресурсы
- перейдите в настройки необходимого ресурса
- перейдите в раздел Кеширование
- включите опцию "Всегда онлайн"
Возможно включить опцию или выбрать ошибки, при которых CDN будет отдавать устаревший контент.

Возможно настроить время кеширования файлов в браузерах конечных пользователей.

Использовать настройки источника
По умолчанию время кеширования в браузере задается настройками источника. Если на источнике таких настроек нет, то в браузере контент кешироваться не будет.

Задать настройки на CDN
Настройки кеширования в браузере задает CDN.
В кеше браузера будут храниться только следующие коды ответа: 200, 201, 204, 206, 301, 302, 303, 304, 307, 308. Ответы не будут кешироваться с остальными кодами в браузере пользователя. По умолчанию время жизни кеша в браузере 4 дня.

Возможно задать время хранения контента в кеше CDN-серверов.
Когда время хранения кеша истекает, CDN-серверы обращаются к файлу, находящемуся на источнике, чтобы сравнить HTTP-заголовок Etag:
-
если значения заголовка не совпадают:
- CDN кешируют новый файл на время, заданное для хранения контента в кеше CDN
-
если значения заголовка совпадают:
- CDN продолжит отдавать пользователям имеющийся в кеше файл еще один период времени, заданный для хранения контента в кеше CDN
Задать параметры кеширования
Опция «Кеширование на CDN» задаёт время хранения контента в кеше CDN-серверов. У неё есть два варианта работы:
- задать настройки на CDN
- использовать настройки источника
Задать настройки на CDN

CDN-серверы запрашивают контент с источника и кешируют его на время, заданное в опции «Задать настройки на CDN».
Настройка имеет два параметра:
-
время жизни кеша
- чтобы задать время хранения кеша для запросов с кодами ответа 200, 206, 301, 302. 4xx и 5xx коды ответа кешироваться не будут
-
расширенные правила кеширования
- чтобы задать время хранения кеша для запросов с другими кодами ответа или, чтобы переопределить некоторые из кодов параметра «Время жизни кеша»
- значения параметра имеют больший приоритет, чем значения параметра «Время жизни кеша»
Пример
- в настройках опции выбрали Задать настройки на CDN и указали время жизни кеша 4 дня
-
в расширенных правилах добавили 3 правила:
- код ответа 200 – 10 минут
- код ответа 404 - 1 минуту

-
в результате настроек запросы будут кешироваться так:
- запросы с кодом ответа 200 – 10 минут
- запросы с кодом ответа 404 - 1 минуту
- запросы с кодом ответа 206, 301, 302 - 4 дня
- 4хх (кроме 404), 5хх - кешироваться не будут
Если контент не запрашивается конечными пользователями, он удаляется из кеша CDN-серверов через 36 часов, независимо от настроек опции.
Использовать настройки источника
При запросе контента с сервера-источника CDN-серверы ориентируются на заголовок Cache-Control, настроенный на источнике, и кешируют контент на время, заданное в качестве его значения.

Если на сервере-источнике отсутствует заголовок Cache-Control, то CDN использует время хранения, заданное в опции «Время жизни кеша по умолчанию».
Данная настройка применяется только для кодов ответов 200, 201, 204, 206, 301, 302, 303, 304, 307, 308, остальные коды не кешируются.
Если контент не запрашивается конечными пользователями, он удаляется из кеша CDN-серверов через 36 часов, независимо от настроек опции.
Настройка кеширования на источнике
По умолчанию наследуются все заголовки, заданные на источнике. Время хранения кеша на CDN-серверах определяется HTTP-заголовком Cache-Control.
Добавьте заголовок Cache-Control на сервер в файл .htacess или nginx.conf. Заголовок должен содержать директивы public, max-age.
Пример конфигурации Apache
<ifModule mod_headers.c>
<FilesMatch "\.(gif|ico)$">
Header set Cache-Control "max-age=31536000, public"
</FilesMatch>
<FilesMatch "\.(js)$">
Header set Cache-Control "max-age=31536000,
public"
</FilesMatch>
</ifModule>
Пример конфигурации Nginx
server {
#...
location ~* \.(?:ico|css|js|gif|jpe?g|png)$ {
add_header Cache-Control "max-age=88000, public";
}
#...
}
Проверка настроек кеширования
Проверьте, какие заголовки кеширования присутствуют при запросе файла, интегрированного с CDN.
Для расшифровки используйте описание заголовков ниже.
Проверка с помощью команды cURL в терминале (terminal для MacOS; cmd для WindowsOS)
- в терминале пропишите: curl -I http://cdn.example.ru/js/intlTelInput/css/intlTelInput.css, где http://cdn.example.ru/js/intlTelInput/css/intlTelInput.css - ссылка на файл, интегрированный с CDN.
- будет получен следующий вывод; обратите внимание на заголовки Cache-Control, Cache, X-Cached-Since, X-ID:
HTTP/1.1 200 OK
Server: nginx/1.13.1
Date: Fri, 09 Jun 2017 12:54:24 GMT
Content-Type: image/jpeg
Content-Length: 124024
Connection: keep-alive
X-Image-Generated: 29
X-Image-Meta: 1024x768
X-Image-Read: 71
Expires: Wed, 06 Dec 2017 12:51:43 GMT
Access-Control-Allow-Origin: *
Last-Modified: Sun, 01 Jan 2017 12:00:00 GMT
Cache-Control: max-age=315360000, public — время, на которое файл будет закеширован на сервере в секундах.
Cache: HIT - файл отдался из кеша CDN.
X-Cached-Since: 2017-06-09T12:51:43+00:00 — время, с которого файл находится в кеше сервера CDN.
X-ID: m9-up-e245 — сервер CDN, с которого был отдан файл.
- если возникает подозрение, что контент не кешируется, проверьте настройки на источнике или обратитесь в техническую поддержку
Проверка с помощью инструментов разработчика в браузере
- откройте любой интернет-браузер (например, Google Chrome)
- откройте сайт
- нажмите на кнопку [F12] клавиатуры - откроется панель разработчика
- выберите вкладку Сеть (Network)
- обновите страницу - нажмите на кнопку [F5] клавиатуры
- будет получен список всех файлов, которые были загружены с сайта
- найдите статический файл (например: jpeg, png, img), интегрированный с CDN и нажмите на него
- на вкладке Headers справа расположены заголовки, настроенные на сервере

- проанализируйте их, используя описание важных заголовков ниже
Важные заголовки
-
проверить, откуда (с вашего сервера или с CDN-сервера) был отправлен контент, возможно по значению HTTP-заголовка X-Cache:
- X-Cache: HIT — файл отдался из кеша CDN
- X-Cache: MISS — файл был запрошен с источника
-
проверить, с какого сервера CDN был отправлен контент, можно по значению заголовка:
- X-ID: [m9-up-e245] - файл отдан с сервера m9-up-e245
-
время, когда контент был закеширован на CDN-сервере, возможно узнать по значению заголовка X-Cached-Since:
- X-Cached-Since: 2017-06-09T12:51:43+00:00 — время, с которого файл находится в кеше узла CDN
Поддержка заголовков
Для проверки кеширования важно понимать, какие значения заголовков кеширования поддерживаются CDN-серверами, а какие - нет.
Совместимые с CDN параметры HTTP-заголовка Cache-Control:
- Cache-Control: Max-Age — задает время жизни файла в кеше в секундах
- Cache-Control: Public — указывает на то, что кешировать файл сможет не только конечный клиент пользователя (браузер), но и прокси-серверы, CDN-серверы и т.д.
Несовместимые с CDN параметры HTTP-заголовка Cache-Control:
- Cache-Control: Private — директива, противоположная «public» — указывает на то, что файл не должен кешироваться промежуточными прокси
- Cache-Control: No-cache — позволяет указать, что клиент должен делать запрос на сервер каждый раз при обращении к файлу
Данная опция определяет, как кэшировать файлы с разными параметрами запроса. Параметр запроса — это уникальная строка запроса (параметр после знака вопроса) в URL.
Пример
http://cdn.example.com/photo.jpeg?id=6&color=blue
http://cdn.example.com/photo.jpeg?id=1&color=blue
По умолчанию опция выключена. Чтобы ее включить:
- перейдите в раздел CDN-ресурсы
- перейдите в настройки необходимого ресурса
- перейдите в раздел Кеширование
- выберите Параметры запроса

У включенной опции доступно 3 переключателя:
- Игнорировать все
Выбрана по умолчанию. Файлы с разными параметрами запроса кешируются как объекты с одинаковым ключом независимо от значения параметров.
Пример
Следующие файлы будут закешированы как объекты с одним ключом кеширования, так как все параметры будут проигнорированы:
http://cdn.example.com/photo.jpeg?id=6&color=blue
http://cdn.example.com/photo.jpeg?id=1&color=blue
- Игнорировать все, кроме
Файлы с указанными параметрами запроса кешируются как объекты с разными ключами, файлы с другими параметрами — как объекты с одинаковым ключом. Каждый параметр вводится в отдельную строку поля.
Пример
Указан параметр id. Следующие файлы будут закешированы как объекты с разными ключами, так как значения параметра id отличаются, значение параметра color будут проигнорированы.
http://cdn.example.com/photo.jpeg?id=6&color=blue
http://cdn.example.com/photo.jpeg?id=1&color=blue
Указан параметр color. Следующие файлы будут закешированы как объекты с одинаковыми ключами, так как значения параметра color совпадают, а параметр id будет проигнорирован.
http://cdn.example.com/photo.jpeg?id=6&color=blue
http://cdn.example.com/photo.jpeg?id=1&color=blue
- Игнорировать только
Файлы с указанными параметрами запроса кешируются как объекты с одинаковым ключом, файлы с другими параметрами — как объекты с разными ключами. Каждый параметр вводится в отдельную строку поля.
Пример
Указан параметр id. Файлы будут закешированы как объекты с одинаковыми ключами, так как значения параметра id будут проигнорированы, а значения параметров color совпадают.
http://cdn.example.com/photo.jpeg?id=6&color=blue
http://cdn.example.com/photo.jpeg?id=1&color=blue
Указан параметр color. Файлы будут закешированы как объекты с разными ключами, так как значения параметра color будут проигнорированы, а значения параметров id отличаются.
http://cdn.example.com/photo.jpeg?id=6&color=blue
http://cdn.example.com/photo.jpeg?id=1&color=blue
По умолчанию наследуются все заголовки, заданные на источнике.
Проверка настроек
Проверьте, какие заголовки кеширования присутствуют при запросе файла, интегрированного с CDN. Для расшифровки используйте описание заголовков ниже.
Проверка с помощью команды cURL в терминале (terminal для MacOS; cmd для WindowsOS)
- в терминале пропишите: curl -I http://cdn.example.ru/js/intlTelInput/css/intlTelInput.css, где http://cdn.example.ru/js/intlTelInput/css/intlTelInput.css - ссылка на файл, интегрированный с CDN
- будет получен следующий вывод; обратите внимание на заголовки Cache-Control,Cache, X-Cached-Since, X-ID:
HTTP/1.1 200 OK
Server: nginx/1.13.1
Date: Fri, 09 Jun 2017 12:54:24 GMT
Content-Type: image/jpeg
Content-Length: 124024
Connection: keep-alive
X-Image-Generated: 29
X-Image-Meta: 1024x768
X-Image-Read: 71
Expires: Wed, 06 Dec 2017 12:51:43 GMT
Cache-Control: max-age=15552000
Access-Control-Allow-Origin: *
Last-Modified: Sun, 01 Jan 2017 12:00:00 GMT
Cache-Control: max-age=315360000, public — время, на которое файл будет закеширован на сервере в секундах.
Cache: HIT - файл отдался из кеша CDN.
X-Cached-Since: 2017-06-09T12:51:43+00:00 — время, с которого файл находится в кеше сервера CDN.
X-ID: m9-up-e245 — сервер CDN, с которого был отдан файл.
- если возникают подозрения, что контент не кешируется, проверьте настройки на источнике или обратитесь в техническую поддержку
Проверка с помощью инструментов разработчика в браузере
- откройте любой интернет-браузер (например, Google Chrome)
- откройте сайт
- нажмите на кнопку [F12] клавиатуры - откроется панель разработчика
- выберите вкладку Сеть (Network)
- обновите страницу - нажмите на кнопку [F5] клавиатуры
- будет получен список всех файлов, которые были загружены с сайта
- найдите статический файл (например: jpeg, png, img), интегрированный с CDN и нажмите на него
- на вкладке Headers справа расположены заголовки, настроенные на сервере
- проанализируйте их, используя описание важных заголовков ниже
Важные заголовки
-
проверить, откуда (с вашего сервера или с CDN-сервера) был отправлен контент, можно по значению HTTP-заголовка X-Cache:
- X-Cache: HIT — файл отдался из кеша CDN
- X-Cache: MISS — файл был запрошен с источника
-
проверить, с какого сервера CDN был отправлен контент, можно по значению заголовка:
- X-ID: [m9-up-e245] - файл отдан с сервера m9-up-e245
-
время, когда контент был закеширован на CDN-сервере, можно узнать по значению заголовка X-Cached-Since:
- X-Cached-Since: 2017-06-09T12:51:43+00:00 — время, с которого файл находится в кеше узла CDN
Поддержка заголовков
Для проверки кеширования важно понимать, какие значения заголовков кеширования поддерживаются CDN-серверами, а какие - нет.
Совместимые с CDN параметры HTTP-заголовка Cache-Control:
- Cache-Control: Max-Age — задает время жизни файла в кеше в секундах.
- Cache-Control: Public — указывает на то, что кешировать файл сможет не только конечный клиент пользователя (браузер), но и прокси-серверы, CDN-серверы и т.д.
Несовместимые с CDN параметры HTTP-заголовка Cache-Control:
- Cache-Control: Private — директива, противоположная «public» — указывает на то, что файл не должен кешироваться промежуточными прокси.
- Cache-Control: No-cache — позволяет указать, что клиент должен делать запрос на сервер каждый раз при обращении к файлу.
Описания и инструкции, размещаемые на данном ресурсе, носят исключительно информационный характер и не могут рассматриваться в качестве гарантий, заверений, рекомендаций или документа, порождающего какие-либо обязательства МТС. Конкретные условия использования сервисов определяются договорами с клиентом. МТС не несет ответственности за содержание публикуемых инструкций и результаты их применения клиентом. Актуальность отдельных положений публикуемых описаний и инструкций необходимо уточнять у аккаунт-менеджера или службы технической поддержки support@cloud.mts.ru