База знаний
Кеширование. Настроить и проверить параметры кеширования на CDN-серверах
Опубликовано Алексей Караульных on 26 February 2023 15:28

Вы можете задать время хранения контента в кеше CDN-серверов.

После того как время хранения кеша истекает, CDN-серверы обращаются к файлу, находящемуся на источнике, чтобы сравнить HTTP-заголовок Etag.

  • Если значения заголовка не совпадают — CDN кешируют новый файл на время, заданное для хранения контента в кеше CDN.

  • Если значения заголовка совпадают — CDN продолжит отдавать пользователям имеющийся в кеше файл еще один период времени, заданный для хранения контента в кеше CDN.

Задать параметры кеширования

Опция Кеширование на CDN задаёт время хранения контента в кеше CDN-серверов.

У неё есть два варианта работы:

  • «Задать настройки на CDN»

  • «Использовать настройки источника»

Задать настройки на CDN

CDN-серверы запрашивают контент с источника и кешируют его на время, заданное в опции «Задать настройки на CDN».

Настройка имеет два параметра:

  • Время жизни кеша

  • Расширенные правила кеширования

Используйте параметр Время жизни кеша, чтобы задать время хранения кеша для запросов с кодами ответа 200, 206, 301, 302. 4xx и 5xx коды ответа кешироваться не будут.

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

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

Например:

В настройках опции вы выбрали «Задать настройки на CDN» и указали Время жизни кеша равное «4 дням».

В расширенных правилах добавили 2 правила:

  • Код ответа 200 — 1 минуту

  • Код ответа 404 — 10 минут

В результате настроек запросы будут кешироваться так:

  • Запросы с кодом ответа 200 — 1 минуту

  • Запросы с кодом ответа 404 — 10 минут

  • Запросы с кодом ответа 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)

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-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, с которого был отдан файл.

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

 

Проверка с помощью инструментов разработчика в браузере

1. Откройте любой интернет-браузер (например, Google Chrome).

2. Откройте ваш сайт.

3. Нажмите кнопку F12 (откроется панель разработчика).

4. Выберите вкладку Сеть (Network).

5. Обновите страницу (клавиши CTRL + F5).

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

7. Найдите статический файл (например, jpeg, png, img), интегрированный с CDN и нажмите на него. Для более удобного поиска можете воспользоваться фильтром в левом углу панели.

8. На вкладке Заголовки (Headers) справа вы увидите заголовки, которые настроены на вашем сервере.

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

 

Важные заголовки

1. Проверить, откуда (с вашего сервера или с CDN-сервера) был отправлен контент, можно по значению HTTP-заголовка Cache:

  • Cache: HIT — файл отдался из кеша CDN.

  • Cache: MISS — файл был запрошен с источника.

2. Проверить, с какого сервера CDN был отправлен контент, можно по значению заголовка X-ID:

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

(0 голос(а))
Эта статья помогла
Эта статья не помогла

Коментарии (0)