В чем разница между мемоизацией и кэшированием

«В чем разница между мемоизацией и кэшированием» — вопрос из категории Паттерны, который задают на 10% собеседований Frontend Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Мемоизация — это частный случай кэширования, применяемый для функций. Она сохраняет результаты вызовов функции с определенными аргументами, чтобы избежать повторных вычислений. Пример в React с useMemo:

const memoizedValue = useMemo(() => computeExpensiveValue(a, b), [a, b]);

Кэширование — более общая концепция хранения данных (например, API-ответов, изображений) для ускорения доступа. Пример с localStorage:

const cachedData = localStorage.getItem('data') || fetchDataAndCache();

Ключевые отличия:

  1. Мемоизация работает на уровне функций, кэширование — на уровне данных
  2. Мемоизация часто автоматически инвалидируется при изменении аргументов
  3. Кэш обычно требует ручного управления сроком жизни данных