Я использую рабочий сервис Workbox для кэширования изображений и ответов API, создавая собственные кэши для каждого. Хотя я вижу, что маршруты совпадают, но я не вижу ответа, хранящегося в кеше, и работник службы затем запрашивает каждый из ресурсов из сети из-за отсутствия кеша.
Я использовал workbox-webpack-plugin для работника сервиса и записывал собственные стратегии маршрутизации и кэширования в другой файл, который затем передается в конфигурацию плагина.
На той же ноте мои css и js файлы хранятся и обслуживаются нормально.
Я пытался использовать разные стратегии кэширования и обходной путь без плагина webpack, но ни одна из них, похоже, не работает
//Cache JS files
workbox.routing.registerRoute(
new RegExp('.*\.js'),
workbox.strategies.cacheFirst()
);
//Cache API response
workbox.routing.registerRoute(
new RegExp('\/api\/(xyz|abc|def)'),
workbox.strategies.staleWhileRevalidate({
cacheName: 'apiCache',
plugins : [
new workbox.expiration.Plugin({
maxEntries: 100,
maxAgeSeconds: 30 * 60 // 30 Minutes
})
]
})
);
//cache images
workbox.routing.registerRoute(
new RegExp('(png|gif|jpg|jpeg|svg)'),
workbox.strategies.cacheFirst({
cacheName: 'images',
plugins: [
new workbox.expiration.Plugin({
maxEntries: 60,
maxAgeSeconds: 30 * 24 * 60 * 60, // 30 Days
})
]
})
);
Это конфигурация веб-пакета:
new workboxPlugin.InjectManifest({
swSrc: 'customWorkbox.js',
swDest: 'sw.js'
})