Что такое кэш (Cache) и для чего он используется?

«Что такое кэш (Cache) и для чего он используется?» — вопрос из категории Архитектура, который задают на 10% собеседований QA Тестировщик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Кэш — это промежуточный буфер (хранилище) с быстрым доступом, в котором сохраняются часто используемые или недавно запрошенные данные. Его основная цель — уменьшение задержек и снижение нагрузки на более медленные источники данных (базы данных, диски, удаленные API).

Принцип работы: При первом запросе данные извлекаются из медленного источника и сохраняются в кэше. Последующие запросы обслуживаются из быстрого кэша, пока данные не устареют или не будут вытеснены.

Примеры использования в разработке и тестировании:

  • Веб-приложения: Кэширование результатов тяжелых SQL-запросов в Redis.
  • Браузер: Кэширование статических ресурсов (CSS, JS, изображения) с помощью HTTP-заголовков.
  • CPU: Многоуровневая кэш-память процессора (L1, L2, L3).

Ключевые аспекты для тестирования:

  1. Актуальность данных (инвалидация): Проверка, что кэш обновляется при изменении данных в источнике. Стратегии: TTL (Time To Live), инвалидация по событию.
  2. Производительность: Замер времени отклика с включенным и выключенным кэшем.
  3. Консистентность: В распределенных системах — проверка, что все узлы кэша имеют одинаковые данные.

Пример HTTP-заголовка для кэширования в браузере:

Cache-Control: public, max-age=3600

Это указывает браузеру и промежуточным прокси кэшировать ресурс на 1 час.