Какие типы данных обычно хранятся в кэше?

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

Ответ

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

Основные категории кэшируемых данных:

  1. Веб-контент:

    • Статические файлы (HTML, CSS, JavaScript, изображения, шрифты).
    • Результаты рендеринга страниц или их фрагментов.
    • Ответы API (JSON, XML).
  2. Данные приложения:

    • Результаты сложных запросов к базе данных.
    • Сериализованные объекты или состояния сессии.
    • Результаты ресурсоемких вычислений.
  3. Метаданные и служебная информация:

    • Конфигурации, справочники.
    • Токены сессий, ключи аутентификации (с осторожностью).

Пример кэширования в Python с использованием functools.lru_cache:

from functools import lru_cache

@lru_cache(maxsize=128)
def get_user_profile(user_id: int):
    # Имитация тяжелого запроса к БД или внешнему сервису
    # ...
    return profile_data
# При повторных вызовах с тем же user_id результат будет взят из кэша.

Политики инвалидации (очистки) кэша:

  • TTL (Time To Live): автоматическое удаление по истечении времени.
  • На основе событий: сброс при изменении исходных данных.
  • Вытеснение (Eviction): удаление старых или редко используемых записей при переполнении (алгоритмы LRU, LFU).