Защита сайта: кеширование и CDN

10.04.2025, 18:26

Что такое CDN?

CDN, или сеть доставки контента это система серверов, размещённых в разных точках мира. Они кешируют статические элементы сайта (изображения, скрипты, стили и прочее), чтобы при обращении пользователя данные загружались не с основного сервера, а с ближайшего к нему CDN-узла. Это повышает скорость отклика и улучшает производительность ресурса.

CDN включен по умолчанию для всех услуг защиты сайта. В общих настройках доступно управление, в том числе включение и выключение кеширования.

Требования к контенту

Следующие форматы кешируются: 

.js, .css, .ejs, .png, .jpg, .jpeg, .gif, .ico, .bpm, .svg, .svgz, .cur, .pict, .tif, .tiff, .eps, .ttf, .eot, .otf, .woff, .woff2, .swf, .mp3, .mp4, .ogg, .wav, .webm, .webp, .avi, .flv, .mov, .pls, .midi, .mid, .mkv, .m4v, .ts, .m3u8, .txt, .exe, .zip, .xz, .gz, .lzma, .7z, .rar, .class, .jar, .tar, .doc, .docx, .xls, .xlsx, .ppt, .pptx, .pdf, .rtf, .csv, .ps, .odt, .ods, .odp, .odg.


Ответы сервера кешируются, если

  • Запрос не содержит заголовка Authorization
  • Запрошенный файл имеет формат из списка выше, ИЛИ запрос содержит заголовок Accept с указанием типа статического контента (начинается с image, audio, video, text/css, text/font), ИЛИ запрос содержит заголовок If-Modified-Since или If-None-Match
  • Ответ содержит заголовок Last-Modified, Expires или Cache-Control
  • Ответ содержит заголовок Content-Length и его значение не превышает 2048 мегабайт

HTTP-заголовок ответа ddg-cache-status показывает, отдается ли контент из кеша CDN (статус HIT) или с целевого сервера (статус MISS).

Заголовок Accept должен соответствовать регулярному выражению ^(image|audio|video|text\/css|font)

Время кеширования и ревалидация

Для управления кешированием используются директивы HTTP-заголовка Cache-Control.

Время хранения файлов в кеше CDN зависит от свежести (freshness) файла, которая задается одним из способов:

  • если есть директива s-maxage, срок свежести файла определяется по его значению;
  • в противном случае используется значение max-age .

Если прямых директив нет, используется эвристическая оценка свежести:

  • по разнице между Expires и Date (если Date больше Expires, свежесть равна нулю);
  • при отсутствии Expires/Date — 10% от разницы между Date и Last-Modified;
  • при отсутствии Date/Last-Modified — 5 минут.

Эвристическая оценка свежести всегда находится в диапазоне от 5 минут до 10 суток.

Файл ревалидируется, если его срок жизни истек. По умолчанию срок жизни равен свежести, однако некоторые директивы могут влиять на его формулу:

  • min-fresh — ревалидировать, когда до завершения времени жизни объекта останется min-fresh секунд. Уменьшает фактический срок жизни файла.
  • max-stale — отдавать из кеша даже в течении max-stale секунд после истечения срока свежести. Увеличивает фактический срок жизни файла.

Очистка кеша

  1. Войдите в личный кабинет, найдите в левом меню раздел "Товары/Услуги", нажмите на "Защита сайта".
  2. Выберите вашу услугу защиты сайта, нажмите "Очистить кеш" на панели сверху. После очистки кеша сайт может загружаться дольше обычного, пока не закешируются все необходимые файлы.