Top.Mail.Ru

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. (опционально) Создайте Расширенные правила кеширования. С помощью правил можно задать время хранения кеша для запросов с другими кодами ответа, а также переопределить время кеширования для кодов, попадающих под параметр «Время жизни кеша».

Важно! Значения параметра Расширенные правила кеширования имеют больший приоритет, чем значения параметра «Время жизни кеша».

Кеширование. Настроить и проверить параметры кеширования на CDN-серверах

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, если на источнике не настроены заголовки кеширования. Ответы с остальными кодами кешироваться не будут.

Кеширование. Настроить и проверить параметры кеширования на CDN-серверах

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 — позволяет указать, что клиент должен делать запрос на сервер каждый раз при обращении к файлу.

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), справа вы увидите заголовки, которые настроены на вашем сервере.

Кеширование. Настроить и проверить параметры кеширования на CDN-серверах

8. Проанализируйте их, используя описание важных заголовков.

Мы используем cookie, чтобы сайт стал лучше для вас.