Использование Cache API в JavaScript

Кэширование – это одна из ключевых стратегий оптимизации производительности в веб-разработке. Оно позволяет временно хранить ресурсы, такие как изображения, стили и скрипты, на стороне клиента, что уменьшает время загрузки страницы и снижает нагрузку на сервер. В JavaScript существует прикладной интерфейс, известный как Cache API, который обеспечивает разработчиков инструментами для управления кэшем браузера. Давайте рассмотрим более подробно что такое Cache API и как использовать этот инструмент.

Что такое Cache API?

Cache API — это часть стандарта Service Workers, который предоставляет программный интерфейс для работы с кэшем HTTP-запросов и ответов. Этот API позволяет сохранять ресурсы в кэше и обращаться к ним в дальнейшем, даже если у пользователя отсутствует подключение к интернету. Cache API может быть использован для хранения статических ресурсов, таких как изображения, стили, скрипты, а также для кэширования результатов запросов к API.

Пример

Для начала работы с Cache API необходимо создать новый кэш и добавить в него ресурсы. Вот пример кода, демонстрирующий это:

// Открываем новый кэш с именем "myrusakov-cache"
caches.open('myrusakov-cache')
  .then(cache => {
    // Добавляем ресурс в кэш
    cache.add('/styles/style.css');
    cache.add('/scripts/script.js');
    cache.add('/images/logo.png');
  });

В этом примере мы открываем новый кэш с именем «myrusakov-cache» и добавляем в него три ресурса: стили, скрипт и изображение.

Для получения ресурса из кэша мы можем использовать метод match, как показано ниже:

// Проверяем, есть ли ресурс в кэше
caches.match('/styles/style.css')
  .then(response => {
    if(response) {
      // Ресурс найден в кэше, используем его
      return response;
    }
    // Ресурс отсутствует в кэше, делаем запрос к серверу
    return fetch('/styles/style.css');
  })
  .then(response => {
    // Используем полученный ресурс
    // (здесь можно применить его, например, добавив его в DOM)
  });

Этот код сначала проверяет, есть ли запрошенный ресурс в кэше. Если ресурс найден, он возвращается из кэша. В противном случае выполняется запрос к серверу с использованием fetch.

Чтобы удалить ресурс из кэша, можно использовать метод delete:

caches.open('myrusakov-cache')
  .then(cache => {
    // Удаляем ресурс из кэша
    cache.delete('/styles/style.css');
  });

Этот код удаляет ресурс /styles/style.css из кэша с именем «myrusakov-cache».

Кэширование результатов запросов к API

Кэширование результатов запросов к API является одним из наиболее распространенных сценариев использования Cache API в JavaScript. Оно позволяет уменьшить задержку при загрузке данных, улучшить производительность приложения и уменьшить нагрузку на сервер. Далее показан пример использования Cache API для кэширования результатов запросов к API:

// Функция для выполнения запроса к API с использованием кэша
async function fetchData(url) {
  // Проверяем, есть ли ответ в кэше
  const cache = await caches.open('myrusakov-cache');
  const cachedResponse = await cache.match(url);

  if (cachedResponse) {
    // Если ответ найден в кэше, возвращаем его
    return cachedResponse.json();
  } else {
    // Если ответ отсутствует в кэше, делаем запрос к серверу
    const response = await fetch(url);

    // Кэшируем полученный ответ для будущего использования
    await cache.put(url, response.clone());

    // Возвращаем данные из ответа
    return response.json();
  }
}

// Пример использования функции fetchData для загрузки данных с API
async function load_article() {
  try {
    const post = await fetchData('https://api.myrusakov.ru/post/12');
    console.log(post);

  } catch (error) {
    console.error('Ошибка при загрузке статьи:', error);
  }
}

// Вызов функции для загрузки данных
load_article();

В этом примере функция fetchData принимает URL ресурса API в качестве параметра. Она сначала проверяет, есть ли ответ на данный URL в кэше. Если ответ найден в кэше, он возвращается. Если же ответ отсутствует в кэше, выполняется запрос к серверу с использованием fetch. Полученный ответ затем кэшируется с использованием cache.put для будущего использования, а затем возвращаются данные из ответа.

Таким образом, Cache API предоставляет мощный инструмент для управления кэшем веб-приложений, что позволяет существенно улучшить производительность и уменьшить нагрузку на сервер. Используйте этот инструмент в своих проектах, чтобы создавать более быстрые и отзывчивые веб-приложения.

Источник