Конфигурационный файл workbox-config.js является
центральным элементом при работе с Workbox CLI. Он используется для
управления процессом генерации сервис-воркера и кеширования ресурсов,
позволяя настроить точное поведение PWA.
Файл представляет собой объект JavaScript, который экспортируется
через module.exports. Основные ключи объекта:
module.exports = {
globDirectory: 'build/',
globPatterns: [
'**/*.{html,js,css,png,jpg,svg}'
],
swDest: 'build/service-worker.js',
runtimeCaching: []
};
globDirectory — корневая директория, в
которой Workbox будет искать файлы для кеширования. Обычно указывается
папка сборки проекта, например build/ или
dist/.globPatterns — массив шаблонов файлов
для предварительного кеширования (precache). Можно использовать маски
*, ** для поддиректорий и перечислять
конкретные расширения файлов.swDest — путь и имя создаваемого
сервис-воркера.runtimeCaching — массив объектов,
описывающих стратегию кеширования для ресурсов, которые подгружаются
динамически во время работы приложения.Предварительное кеширование позволяет заранее добавить важные ресурсы
в кэш, чтобы они были доступны оффлайн. Каждый элемент файла,
совпадающий с шаблонами globPatterns, добавляется в
precacheManifest автоматически.
Пример расширенной конфигурации:
module.exports = {
globDirectory: 'dist/',
globPatterns: [
'**/*.{html,js,css,png,jpg,svg,json}'
],
swDest: 'dist/service-worker.js',
maximumFileSizeToCacheInBytes: 5 * 1024 * 1024 // ограничение размера файла 5 МБ
};
Ключ maximumFileSizeToCacheInBytes
позволяет ограничить размер файлов, которые будут добавлены в кеш. Это
полезно для предотвращения кеширования больших мультимедийных файлов,
которые могут замедлить загрузку приложения.
Для ресурсов, которые не известны на этапе сборки (например, API-запросы), используется runtime caching. Каждый элемент описывается объектом с параметрами:
urlPattern — регулярное выражение или
строка, соответствующая URL ресурса.handler — стратегия кеширования:
CacheFirst, NetworkFirst,
StaleWhileRevalidate.options — дополнительные настройки,
такие как имя кэша, лимиты количества и срока хранения.Пример:
runtimeCaching: [
{
urlPattern: /^https:\/\/api\.example\.com\/data/,
handler: 'NetworkFirst',
options: {
cacheName: 'api-cache',
expiration: {
maxEntries: 50,
maxAgeSeconds: 24 * 60 * 60
}
}
},
{
urlPattern: /\.(?:png|jpg|jpeg|svg)$/,
handler: 'CacheFirst',
options: {
cacheName: 'images-cache',
expiration: {
maxEntries: 100,
maxAgeSeconds: 7 * 24 * 60 * 60
}
}
}
]
optionscacheName — имя кэша, позволяет
разделять разные типы ресурсов.expiration — настройки ограничения
кэша: maxEntries и maxAgeSeconds.backgroundSync — можно настроить
очередь для повторной отправки запросов при восстановлении сети.fetchOptions — параметры, передаваемые
в fetch(), например credentials или
mode.matchOptions — дополнительные
параметры для сопоставления запроса с кэшированными элементами.urlPattern: /\.(?:js|css)$/
urlPattern: /^https:\/\/api\.example\.com\/v1\//
urlPattern: /\.(?:png|jpg|jpeg|gif|svg)$/
Для генерации сервис-воркера используется команда:
workbox generateSW workbox-config.js
CLI прочитает настройки из файла, выполнит предварительное
кеширование, создаст service-worker.js и подготовит
необходимые манифесты.
StaleWhileRevalidate для изображений и
статических ресурсов, чтобы ускорить загрузку при одновременном
обновлении кэша.urlPattern на точность регулярного выражения,
чтобы не кешировать лишние ресурсы.Файл workbox-config.js является мощным инструментом для
детальной настройки поведения PWA, позволяя комбинировать стратегию
кеширования, оптимизировать работу сервис-воркера и обеспечивать
стабильную работу приложения в оффлайн-режиме.