Ответ
Принудительный сброс кэша CDN — стандартная операция при развертывании обновлений. Я использую несколько подходов в зависимости от провайдера и задачи:
1. Полная инвалидация (Purge Everything) Используется при крупных релизах. Пример для AWS CloudFront через AWS CLI:
aws cloudfront create-invalidation
--distribution-id E1A2B3C4D5E6F7
--paths "/*"
Для Cloudflare через API:
curl -X POST "https://api.cloudflare.com/client/v4/zones/ZONE_ID/purge_cache"
-H "Authorization: Bearer API_TOKEN"
-H "Content-Type: application/json"
--data '{"purge_everything":true}'
2. Селективная инвалидация по путям Эффективна для точечных обновлений. Сбрасываю только измененные ресурсы:
# CloudFront
aws cloudfront create-invalidation
--distribution-id E1A2B3C4D5E6F7
--paths "/css/main.css" "/js/app.js"
# Или с шаблонами
--paths "/images/products/*.jpg"
3. Версионирование ассетов (Cache Busting) Автоматизирую через сборку, чтобы избежать ручных сбросов. Добавляю хэш к именам файлов:
# Исходный файл: app.js
# После сборки: app.a1b2c3d4.js
# В HTML: <script src="/static/app.a1b2c3d4.js"></script>
Это реализуется через Webpack, Vite или аналогичные инструменты.
Ключевые практики:
- Проверяю TTL настроек CDN перед сбросом
- Учитываю лимиты провайдера (например, CloudFront — 1500 путей в месяц бесплатно)
- Ожидаю задержку распространения (от 30 секунд до 10 минут)
- Интегрирую с CI/CD — сброс кэша выполняется автоматически после успешного деплоя
- Мониторю статус инвалидации через API провайдера
Ответ 18+ 🔞
Да ты посмотри, какой у нас тут учебник по сбросу кэша развернули! Ну ладно, сейчас я тебе на пальцах объясню, как эту магию делают, чтобы у пользователей не торчал из браузера вчерашний, прости господи, контент.
1. Полный разнос всего и вся (Purge Everything) Это когда ты такой: «ёпта, всё нахуй, сжигаем мосты». Берёшь и выпиливаешь весь кэш под ноль. Идеально, когда у тебя релиз крупный, и старые файлы могут только навредить. Вот, смотри, как это на AWS CloudFront делается — команда одна, зато эффект огонь:
aws cloudfront create-invalidation
--distribution-id E1A2B3C4D5E6F7
--paths "/*"
А вот для Cloudflare — тут уже через их API надо стучаться. Тоже ничего сложного, главное — токен не потеряй, а то доверия ебать ноль к тебе после этого будет.
curl -X POST "https://api.cloudflare.com/client/v4/zones/ZONE_ID/purge_cache"
-H "Authorization: Bearer API_TOKEN"
-H "Content-Type: application/json"
--data '{"purge_everything":true}'
2. Точечный удар по путям А это для хитрожопых, кто не хочет весь трафик грузить заново. Допустим, ты только CSS-файлик поправил. Ну и зачем тогда весь сайт сбрасывать? Берёшь и бьёшь точно в цель:
# CloudFront
aws cloudfront create-invalidation
--distribution-id E1A2B3C4D5E6F7
--paths "/css/main.css" "/js/app.js"
# Или, если у тебя там целая пачка картинок поменялась, можно и так
--paths "/images/products/*.jpg"
3. Версионирование — чтобы вообще не париться
А это, дружище, высший пилотаж. Ты такой: «да похуй на ручные сбросы». Суть в чём? Ты к имени каждого файла прикручиваешь уникальную приблуду, обычно хэш. Старый app.js умирает, а на его месте рождается app.a1b2c3d4.js. Браузер видит новый URL и качает свежачок, даже не вспоминая про старый кэш. Делается это на этапе сборки — Webpack, Vite или что там у тебя. Гениально и просто.
На что смотреть, чтобы не обосраться:
- TTL проверь, ёпта! Перед тем как всё взрывать, глянь, на сколько у тебя кэш заточен. А то будешь потом удивляться, почему ничего не обновилось.
- Лимиты провайдера — это святое. Тот же CloudFront первые 1500 путей в месяц бесплатно даёт, а дальше — плати, чувак. Не вылети в трубу.
- Терпения наберись. Распространение — не мгновенное. Где-то 30 секунд, а где-то и 10 минут ждать придётся. Волнение ебать — но это норма.
- В CI/CD интегрируй. Идеальный мир — это когда после успешного деплоя твой пайплайн сам всё почистил. Руками тыкать — это распиздяйство.
- Статус мониторь. Не пускай на самотёк. Дёргай API провайдера, чтобы убедиться, что процесс инвалидации таки завершился, а не накрылся медным тазом где-то посередине.
Вот и вся наука. Главное — не делай полный сброс каждые пять минут, а то провайдер тебя пидарасом шерстяным посчитает и выпишет счёт овердохуища.