Файл удалили или заменили в S3, но CDN продолжает отдавать старую версию. Пользователи видят неактуальные картинки, документы или скрипты.

Для медиа, прайсов, документов и frontend-ассетов это выглядит как поломка: на сервере уже все исправлено, а сайт показывает старое.

Коротко: нужно управлять TTL, cache-control и инвалидацией, а для важных файлов использовать версионированные URL.

Почему возникает проблема

CDN кеширует объект по URL. Если URL не меняется, TTL большой, purge не выполнен, cache-control задан неверно или origin shield хранит старый ответ, CDN может отдавать старую копию после удаления в S3.

Что проверить в первую очередь

  • какой cache-control у файла
  • какой TTL на CDN
  • прошла ли invalidation
  • отдает ли S3 новую версию напрямую
  • не используется ли одинаковый URL для разных файлов

Как я решаю такую задачу

Я отделяю проблему origin-хранилища от проблемы CDN-кеша.

  • проверяю файл напрямую в S3
  • смотрю headers через CDN
  • исправляю cache-control и TTL
  • настраиваю purge или versioned URLs
  • тестирую обновление нового файла

Что подготовить

  • URL файла через CDN
  • путь в S3
  • какой CDN используется
  • ожидаемое поведение обновления
  • доступ к CDN и bucket при необходимости

Сроки и риски

Разовая инвалидация быстрая, но лучше настроить правила кеширования, чтобы проблема не повторялась при каждом обновлении.

Чего лучше не делать

Не ставьте нулевой кеш для всех файлов. Это убьет смысл CDN и может повысить нагрузку на origin.

FAQ

Почему после удаления файл все еще открывается?

CDN может хранить копию до истечения TTL.

Что такое versioned URL?

URL с версией или хешем файла, который меняется при обновлении.

Можно ли принудительно очистить CDN?

Да, через purge/invalidation, если сервис это поддерживает.

Какие файлы кешировать дольше?

Статические ассеты с версионированными именами можно кешировать долго.

Нужна похожая задача?

Напишите в Telegram @rabotator_support или оставьте заявку на сайте. Пришлите ссылку, пример ошибки и короткое описание того, как должно работать. Я посмотрю задачу, предложу безопасный план и скажу, какие доступы понадобятся.

Итог

CDN должен быстро обновлять измененные файлы, долго кешировать версионированные ассеты и не отдавать удаленные объекты там, где это критично.