Workbox предоставляет мощные инструменты для управления кэшированием ресурсов в прогрессивных веб-приложениях (PWA). Одним из ключевых компонентов является механизм предварительного кэширования (precache), который позволяет заранее определить набор ресурсов для хранения в сервис-воркере, обеспечивая их мгновенную доступность при последующих посещениях приложения. Центральным элементом этого механизма является манифест предварительного кэширования.
Манифест предварительного кэширования — это массив объектов, каждый из которых описывает ресурс, который необходимо кэшировать. Стандартная структура выглядит следующим образом:
[
{
"url": "/index.html",
"revision": "f7b5a1c2d3e4"
},
{
"url": "/styles/main.css",
"revision": "a1b2c3d4e5"
},
{
"url": "/scripts/app.js",
"revision": "1234567890"
}
]
Ключевые поля:
url — путь к ресурсу, который должен быть
закэширован.revision — контрольная сумма или хэш файла.
Обеспечивает версионирование ресурса: при изменении контента
автоматически обновляется кэш.Для создания манифеста можно использовать автоматические инструменты Workbox, например:
workbox generateSW или
workbox injectManifest.Пример использования injectManifest в конфигурации
Webpack:
const { InjectManifest } = require('workbox-webpack-plugin');
module.exports = {
entry: './src/index.js',
output: {
filename: 'bundle.js',
path: __dirname + '/dist'
},
plugins: [
new InjectManifest({
swSrc: './src/service-worker.js',
swDest: 'service-worker.js',
maximumFileSizeToCacheInBytes: 5 * 1024 * 1024
})
]
};
В этом случае Workbox сканирует указанные ресурсы, генерирует манифест и внедряет его в сервис-воркер.
После генерации манифест импортируется в сервис-воркер с помощью
функции precacheAndRoute:
import { precacheAndRoute } from 'workbox-precaching';
import manifest from './precache-manifest.js';
precacheAndRoute(manifest);
Особенности работы:
precacheAndRoute регистрирует все ресурсы из манифеста
в кэше при установке сервис-воркера.revision ресурса происходит
автоматическое обновление кэша.Workbox обеспечивает гибкие возможности для управления жизненным циклом закэшированных ресурсов:
Revision-based cache Ресурс обновляется только
при изменении поля revision. Это минимизирует лишние
сетевые запросы.
Cache-first По умолчанию
precacheAndRoute использует стратегию «cache-first», что
означает: сначала проверяется кэш, затем сеть.
Network-first для динамических данных Манифест
не предназначен для динамического контента, который обновляется часто.
Для таких ресурсов используются другие стратегии (например, через
registerRoute).
revision для
статических файлов. Использование только URL без версии приводит к
невозможности контроля обновлений.Манифест предварительного кэширования тесно связан с:
Применение манифеста совместно с этими плагинами позволяет создавать PWA с высокой производительностью и надёжным управлением версиями.
Манифест предварительного кэширования является основой предсказуемого кэширования ресурсов в Workbox, обеспечивая мгновенную загрузку статического контента и автоматическое обновление при изменении файлов. Его правильная генерация, интеграция и поддержка жизненного цикла ресурсов критически важны для стабильной работы современного веб-приложения.