EMZETT.
Увійти

Кешування (caching)

Коротко: Процес тимчасового зберігання даних у кеші для прискорення майбутнього доступу.

Докладніше: Стратегії кешування різняться тим, як довго (TTL) і як оновлюється кеш — наприклад, «інвалідація кешу» (cache invalidation) за зміни першоджерела або «stale-while-revalidate», коли застарілі дані ще ненадовго видаються, доки перезавантажуються у фоні.

Подробиці

Поширені на практиці стратегії кешування:

  • Інвалідація кешу (cache invalidation): за зміни першоджерела відповідний запис кешу активно видаляється або перезаписується — точно, але трудомістко в реалізації («в інформатиці є лише дві складні проблеми: інвалідація кешу та іменування речей»).
  • Спливання за TTL: записи просто спливають через фіксований час (див. TTL), незалежно від того, чи змінилися дані насправді, — просто, але неточно (або надто коротко, і кеш мало допомагає, або надто довго, і користувачі бачать застарілі дані).
  • Stale-while-revalidate: запис кешу з простроченим строком видається ще раз, доки паралельно перезавантажується у фоні, — користувачі не помічають повільного запиту ціною короткочасно трохи застарілих даних.
  • Теги кешу: записи позначаються ключовими словами, тож за зміни, скажімо, певного товару всі зачеплені записи можна цілеспрямовано інвалідувати одразу, не очищаючи весь кеш.

Next.js всередині використовує одразу кілька цих стратегій (кеш роутера, кеш даних, кеш повного маршруту) — яка з них діє, залежить від конкретного маршруту та використовуваних опцій fetch.

Див. також: Кеші, TTL