Что делать, если не загружается кэш?

«Что делать, если не загружается кэш?» — вопрос из категории Основы тестирования, который задают на 24% собеседований AQA / Automation. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Если в тестируемом приложении не загружается кэш, я исследую проблему системно, проверяя разные уровни:

  1. Клиентская сторона (браузер/приложение):

    • Очистка кэша: Проверяю, воспроизводится ли проблема после полной очистки кэша браузера и данных сайта (Cookies, LocalStorage).
    • Инструменты разработчика: Открываю вкладку Network, ставлю галочку Disable cache и сравниваю запросы. Смотрю заголовки ответов (Cache-Control, ETag, Last-Modified). Ресурс, который должен кэшироваться, при повторном запросе должен возвращать статус 304 Not Modified или загружаться из памяти (from memory cache/from disk cache).
    • Режим инкогнито/новый профиль: Запускаю тест в режиме инкогнито, чтобы исключить влияние расширений или старого состояния профиля.
  2. Серверная сторона и конфигурация:

    • Заголовки кэширования: Проверяю, правильно ли сервер отправляет заголовки Cache-Control (например, max-age=3600 для кэширования на час). Их отсутствие или значение no-cache/no-store может быть причиной.
    • CDN и прокси: Если используется CDN (CloudFront, Akamai), проблема может быть в его настройках или инвалидации кэша.
    • Логи сервера: Смотрю логи бэкенда или CDN, чтобы убедиться, что запросы приходят и ответы формируются корректно.
  3. Тестовые сценарии для проверки кэша:

    • Пишу автоматизированный тест, который:
      • Загружает ресурс (например, изображение или JS-файл).
      • Фиксирует время загрузки и источник (сеть/кэш).
      • Повторно запрашивает тот же ресурс и проверяет, что время загрузки значительно меньше, а в логах Network указан статус 304 или загрузка из кэша.

Пример вывода проблемы: "Кэширование не работает для файла main.js: заголовок Cache-Control установлен в no-store на бэкенде, из-за чего браузер при каждом запросе загружает файл заново".