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