Можно ли задать кэширование через JavaScript

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

Ответ

Да, можно управлять кэшированием через JavaScript, но с ограничениями.

  1. Service Workers — мощный инструмент для кэширования ресурсов.
// Регистрация Service Worker
if ('serviceWorker' in navigator) {
  navigator.serviceWorker.register('/sw.js');
}

В файле sw.js можно кэшировать запросы с помощью Cache API.

  1. LocalStorage/SessionStorage — для кэширования данных.
localStorage.setItem('cachedData', JSON.stringify(data));
  1. HTTP-заголовки — JavaScript не может напрямую управлять Cache-Control, но можно добавить уникальный параметр к URL, чтобы избежать кэширования:
fetch(`/api/data?timestamp=${Date.now()}`);

Важно: Полное управление кэшированием на стороне сервера (через HTTP-заголовки) эффективнее.