Ответ
Принудительный сброс кэша 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 провайдера