- tocdepth
2
Настройка и проверка параметров кеширования на CDN-серверах
Вы можете задать время хранения контента в кеше CDN-серверов.
Когда время хранения кеша истекает, CDN-серверы обращаются к файлу на источнике, чтобы сравнить HTTP-заголовок Etag
:
Если значения заголовка не совпадают, CDN кеширует новый файл на время, заданное для хранения контента в кеше CDN.
Если значения заголовка совпадают, CDN продолжает отдавать пользователям имеющийся в кеше файл в течение еще одного периода времени, заданного для хранения контента в кеше CDN.
Валидация источника гарантирует, что CDN-серверы выполняют проверку подлинности SSL-сертификата на сервере-источнике и проверку ответившего сервера на принадлежность клиенту при установке соединения.
Настройка кеширования на CDN-сервере
Опция кеширования задает время хранения контента в кеше CDN-серверов. Можно задать настройки на CDN или использовать настройки источника.
При выборе опции Задать настройки на CDN CDN-серверы запрашивают контент с источника и кешируют его на указанное время:
В настройках можно указать время жизни кеша для запросов с кодами ответа
200
,206
,301
и302
.В расширенных настройках можно указать время хранения кеша для запросов с другими кодами ответа. Значение в поле Расширенные правила кеширования имеет больший приоритет, чем значение в поле Время жизни кеша.
При выборе опции Использовать настройки источника CDN-серверы ориентируются на заголовок Cache-Control
и кешируют контент на указанное время.
Опция применяется для запросов с кодами ответа 200
, 201
, 204
, 206
, 301
, 302
, 303
, 304
, 307
и 308
.
Чтобы настроить кеширование на CDN-сервере:
В личном кабинете CDN перейдите в раздел
и нажмите на нужный CDN-ресурс.В разделе Общие нажмите Кеширование на CDN.
В разделе Кеширование на CDN укажите нужные настройки.
Настройка кеширования на источнике
По умолчанию CDN наследует заголовки от источника.
Заголовок должен содержать директивы public
и max-age
.
Добавьте заголовок Cache-Control
в файл .htacess
или nginx.conf
на сервере.
Пример конфигурации 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"; } #... }
Проверка настроек кеширования
С помощью команды curl
в terminal для MacOS или cmd для ОС Windows проверьте, какие заголовки кеширования используются при запросе файла, интегрированного с CDN.
Выполните команду
curl -I http://cdn.cloud.ru/js/intlTelInput/css/intlTelInput.css
.Используйте ссылку на файл, интегрированный с CDN.
В выводе команды обратите внимание на заголовки
Cache-Control
,Cache
,X-Cached-Since
иX-Node
.Описание заголовков приводится ниже.
Если контент не кешируется, проверьте настройки на источнике или обратитесь в техническую поддержку.
Заголовки
Ниже приводится список заголовков кеширования, которые поддерживаются CDN-серверами для проверки кеширования.
Cache-Control
Совместимые с CDN параметры HTTP-заголовка Cache-Control
:
Cache-Control: Max-Age
— задает время жизни файла в кеше в секундах.Cache-Control: Public
— кешировать файл сможет не только конечный клиент пользователя, но и прокси-серверы, и CDN-серверы.
Не совместимые с CDN параметры HTTP-заголовка Cache-Control
:
Cache-Control: Private
— директива, противоположнаяpublic
. Файл не кешируется промежуточными прокси.Cache-Control: No-cache
— клиент должен делать запрос на сервер каждый раз при обращении к файлу.
Cache
Проверить источник отправки контента по значению заголовка Cache
:
Cache: HIT
— файл отдан из кеша CDN.Cache: MISS
— файл запрошен с источника.
X-Node
Проверить сервер CDN отправки контента по значению заголовка X-Node
:
X-Node: [m9-up-e245]
— файл отдан с сервера m9-up-e245.
X-Cached-Since
Узнать время кеширования контента на CDN-сервере по значению заголовка X-Cached-Since
:
X-Cached-Since: 2017-06-09T12:51:43+00:00
— время, с которого файл находится в кеше узла CDN.
Была ли статья полезной?
для Dev & Test