Cache First — это один из стратегических подходов к кешированию в библиотеке Workbox для сервис-воркеров, который ориентирован на максимально быстрое предоставление ресурсов из локального кеша. При использовании этой стратегии запрос сначала проверяет кеш: если ресурс найден, он возвращается немедленно, и сетевой запрос не выполняется. Если ресурса в кеше нет, происходит сетевой запрос и последующее сохранение ответа в кеш для будущих обращений.
Для работы с Cache First в Workbox необходимо использовать класс
CacheFirst из модуля workbox-strategies.
Простейший пример:
import { registerRoute } from 'workbox-routing';
import { CacheFirst } from 'workbox-strategies';
import { ExpirationPlugin } from 'workbox-expiration';
// Кеширование изображений
registerRoute(
({ request }) => request.destination === 'image',
new CacheFirst({
cacheName: 'images-cache',
plugins: [
new ExpirationPlugin({
maxEntries: 50, // Максимальное количество элементов в кеше
maxAgeSeconds: 7 * 24 * 60 * 60, // Время жизни кеша — 7 дней
}),
],
})
);
Ключевые моменты:
cacheName позволяет задать имя кеша, что облегчает его
управление.ExpirationPlugin управляет временем хранения и
количеством элементов.request.destination фильтрует типы ресурсов, например
'image', 'script' или
'document'.Workbox предоставляет набор плагинов, которые позволяют гибко управлять стратегией Cache First:
Пример с дополнительной фильтрацией ответов:
import { CacheableResponsePlugin } from 'workbox-cacheable-response';
new CacheFirst({
cacheName: 'api-cache',
plugins: [
new CacheableResponsePlugin({
statuses: [0, 200], // Кешируются только успешные ответы
}),
new ExpirationPlugin({
maxEntries: 100,
maxAgeSeconds: 24 * 60 * 60,
}),
],
});
StaleWhileRevalidate или использовать кеширование только
для определённых эндпоинтов, где данные редко меняются.Cache First можно комбинировать с другими стратегиями для оптимизации производительности:
StaleWhileRevalidate — позволяет отдать старый кеш,
одновременно обновив его в фоне.NetworkFirst — приоритет сети, но кеш используется как
резерв.ExpirationPlugin.images-cache,
css-cache, api-cache) для удобного
управления.Cache First в Workbox — это мощный инструмент для ускорения загрузки и уменьшения сетевой нагрузки, при этом требующий внимательного контроля кеша и продуманного сочетания с другими стратегиями для динамического контента.