Как настроить CDN для раздачи статических файлов?
Откройте панель CDN, создайте отдельный домен раздачи — в Cloudflare это DNS-запись CNAME для поддомена static с включённым проксированием, в AWS CloudFront — Create Distribution с указанием Origin domain, — а в качестве источника укажите свой сервер или бакет S3, после чего задайте правила кэширования по расширениям css, js, изображений и шрифтов. Именно отдельный поддомен, а не основной домен, позволяет раздавать статику с длинным сроком кэширования и не сбрасывать его при каждой выкладке HTML.
Рабочий минимум выглядит так: на источнике отдавайте статику с заголовком Cache-Control public, max-age=31536000, immutable; имена файлов собирайте с хешем содержимого (app.8f3c2.js), чтобы новая версия получала новый URL и не требовала ручной очистки кэша; HTML отдавайте с max-age=0 или no-cache, иначе посетители будут видеть старую разметку; включите сжатие Brotli и gzip, а также HTTP/2 или HTTP/3 на стороне CDN.
Отдельно проверьте заголовок Access-Control-Allow-Origin, если шрифты, изображения или JSON запрашиваются скриптами с других поддоменов, — без него браузер заблокирует загрузку. Сброс кэша выполняется принудительно: в Cloudflare — Caching, Configuration, Purge Everything или Purge by URL, в CloudFront — Invalidations с путём вида /assets/*.
