Я использую Workbox .
Я хочу кешировать файлы из https://cdn.jsdelivr.net
, поэтому я добавляю это в service-worker.js
:
workbox.routing.registerRoute(new RegExp('https://cdn.jsdelivr.net/.*'), new workbox.strategies.CacheFirst({}), 'GET');
В первый раз я открываю приложение и вижу, что мое приложение отправляется запрос на https://cdn.jsdelivr.net/npm/@mdi/font@4.x/fonts/materialdesignicons-webfont.woff2?v=4.9.95
.
Во второй раз, когда я нажимаю refre sh, я вижу, как он извлекается из сервисного работника в сети.
Но когда я делаю автономный режим и нажимаю refre sh У меня 404.
Почему? Что я могу сделать, чтобы добавить в кэш правильным способом?
Я делаю точно так же, как сказать в документах и в GitHub выпуск , но не работает эфир.
Мой полный код:
console.log('in pwa');
workbox.setConfig({
debug: true,
});
self.addEventListener('message', (event) => {
if (event.data && event.data.type === 'SKIP_WAITING') {
self.skipWaiting();
}
});
// The precaching code provided by Workbox. You don't need to change this part.
self.__precacheManifest = [].concat(self.__precacheManifest || []);
console.log({ __precacheManifest: self.__precacheManifest });
// workbox.precaching.suppressWarnings()
workbox.precaching.precacheAndRoute(self.__precacheManifest, {});
workbox.routing.registerRoute(
new RegExp('https://fonts.(?:googleapis|gstatic).com/(.*)'),
new workbox.strategies.CacheFirst({
cacheName: 'google-fonts',
plugins: [
new workbox.expiration.Plugin({
maxEntries: 30,
}),
new workbox.cacheableResponse.Plugin({
statuses: [0, 200]
}),
],
}),
);
workbox.routing.registerRoute(
new RegExp('https://cdn.jsdelivr.net/(.*)'),
new workbox.strategies.CacheFirst({
cacheName: 'jsdelivr-fonts',
plugins: [
new workbox.expiration.Plugin({
maxEntries: 30,
}),
new workbox.cacheableResponse.Plugin({
statuses: [0, 200]
}),
],
}),
);
// https://cdn.jsdelivr.net
workbox.routing.registerNavigationRoute(workbox.precaching.getCacheKeyForURL('/index.html'));
НЕТ разделов кэша (для google-шрифтов и jsdelivr-шрифтов) создать:
ОБНОВЛЕНИЕ
Когда я полностью удаляю сервисного работника и открываю приложение, все равно у меня нет раздела кеша. после того, как я нажал refre sh - У меня есть!
Как это сделать при установке сервисного работника? а не активировать?