CDN
Кеширование. Настроить и проверить параметры кеширования на CDN-серверах
Вы можете задать время хранения контента в кеше CDN-серверов.
После того как время хранения кеша истекает, CDN-серверы обращаются к файлу, находящемуся на источнике, чтобы сравнить HTTP-заголовок Etag.
-
Если значения заголовка не совпадают — CDN кеширует новый файл на время, заданное для хранения контента в кеше CDN.
-
Если значения заголовка совпадают — CDN продолжит отдавать пользователям имеющийся в кеше файл ещё один период времени, заданный для хранения контента в кеше CDN.
Внимание. Независимо от настроек опции контент удаляется из кеша CDN-серверов через 36 часов, если он не запрашивается конечными пользователями.
Настроить параметры кеширования
Опция Кеширование на CDN задаёт время хранения контента в кеше CDN-серверов. Чтобы настроить опцию:
1. Перейдите в настройки желаемого CDN-ресурса.
2. Включите опцию Кеширование на CDN.
3. Выберите вариант работы опции и настройте её.
Доступны 2 варианта работы:
Подробнее о каждом варианте рассказываем ниже.
4. Сохраните изменения.
Задать настройки на CDN
При выборе варианта «Задать настройки на CDN», CDN-серверы будут запрашивать контент с источника и кешировать его на время, заданное в опции.
Чтобы настроить опцию:
1. Укажите «Время жизни кеша». Параметр задаёт время хранения кеша для запросов с кодами ответа 200, 206, 301, 302. Коды ответа 4xx и 5xx кешироваться не будут.
Важно. При выборе значения «Не кешировать» CDN не будет кешировать ответы с кодами 200, 206, 301, 302, 4хх и 5хх. Используйте Расширенные настройки кеширования, чтобы переопределить значение параметра «Время жизни кеша».
2. (опционально) Создайте Расширенные правила кеширования. С помощью правил можно задать время хранения кеша для запросов с другими кодами ответа, а также переопределить время кеширования для кодов, попадающих под параметр «Время жизни кеша».
Важно. Значения параметра Расширенные правила кеширования имеют больший приоритет, чем значения параметра «Время жизни кеша».
3. Сохраните изменения.
Пример работы опции:
1. В настройках опции вы выбрали «Задать настройки на CDN» и указали «Время жизни кеша» равное «4 дням».
2. В расширенных правилах добавили 2 правила:
-
Код ответа 200 — 1 минута
-
Код ответа 404 — 10 минут
В результате настроек запросы будут кешироваться так:
-
Запросы с кодом ответа 200 — 1 минуту
-
Запросы с кодом ответа 404 — 10 минут
-
Запросы с кодом ответа 206, 301, 302 — 4 дня
-
4хх (кроме 404), 5хх — кешироваться не будут
Использовать настройки источника
При выборе варианта «Использовать настройки источника», CDN-серверы, запрашивая контент, будут ориентироваться на настроенный на источнике заголовок Cache-Control, и кешировать контент на время, заданное в его значении.
Если на сервере-источнике отсутствует заголовок Cache-Control, то CDN использует время хранения, заданное в параметре «Время жизни кеша по умолчанию».
Чтобы настроить опцию:
1. Укажите «Время жизни кеша по умолчанию». Значение применяется для ответов с кодами 200, 201, 204, 206, 301, 302, 303, 304, 307, 308, если на источнике не настроены заголовки кеширования. Ответы с остальными кодами кешироваться не будут.
2. Сохраните изменения.
Настройка кеширования на источнике
По умолчанию мы наследуем все заголовки, заданные на источнике. Время хранения кеша на 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.
1. Проверить, откуда (с вашего сервера или с CDN-сервера) был отправлен контент, можно по значению HTTP-заголовка Cache:
-
Cache: HIT — файл отдался из кеша CDN.
-
Cache: MISS — файл был запрошен с источника.
2. Проверить, с какого сервера CDN был отправлен контент, можно по значению заголовка X-Node:
-
X-Node: [m9-up-e245] — файл отдан с сервера m9-up-e245.
3. Время, когда контент был закеширован на 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 — позволяет указать, что клиент должен делать запрос на сервер каждый раз при обращении к файлу.
Проверка с помощью команды cURL в терминале (terminal для MacOS; cmd для WindowsOS)
1. В терминале пропишите: curl -I http://cdn.example.ru/js/intlTelInput/css/intlTelInput.css
Где http://cdn.example.ru/js/intlTelInput/css/intlTelInput.css — ссылка на файл, интегрированный с CDN.
2. Вы получите такой вывод. Обратите внимание на заголовки Cache-Control, Cache, X-Cached-Since, X-Node:
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-Node: m9-up-e245 — сервер CDN, с которого был отдан файл
3. Если у вас возникли подозрения, что контент не кешируется, проверьте настройки на источнике, изучите статью «Что делать, если контент не кешируется» или обратитесь в техническую поддержку support@edgecenter.ru.
Проверка с помощью инструментов разработчика в браузере
1. Откройте любой интернет-браузер (например, Google Chrome).
2. Откройте ваш сайт.
3. Нажмите кнопку F12 — откроется панель разработчика.
4. Выберите вкладку Сеть (Network).
5. Обновите страницу, нажав клавишу F5. Вы получите список всех файлов, которые были загружены с вашего сайта.
6. Найдите статический файл (например, JPEG, PNG, IMG), интегрированный с CDN, и нажмите на него. Для более удобного поиска можете воспользоваться фильтром в левом углу панели.
7. На вкладке Заголовки (Headers), справа вы увидите заголовки, которые настроены на вашем сервере.
8. Проанализируйте их, используя описание важных заголовков.