Я пытаюсь перенести свой старый код из google workbox v2 в workbox v3, и я не могу использовать workbox.routing.registerNavigationRoute
, потому что мой маршрут по умолчанию '/' (где находится мой apphell) - это среда выполнениякеш (потому что он предназначен для многоязычного веб-сайта https://www.autovisual.com с языками, помещенными в подпапку '/ fr', '/ es' ... с уникальным рабочим-сервисом в области '/').
Это код v2:
workboxSW.router.setDefaultHandler({
handler: ({
event
}) => {
return fetch(event.request);
}
});
workboxSW.router.setCatchHandler({
handler: ({
event
}) => {
if (event.request.mode === 'navigate') {
return caches.match('/');
}
return new Response();
}
});
Кажется довольно простым: цель состоит в том, чтобы перехватить все запросы 'навигация', которые не соответствуют ни одному другому маршруту, и отправить кэшированную версию, сначала сеть,url '/'.
Для информации в клиенте js я использую:
if ('serviceWorker' in navigator) {
window.addEventListener('load', function() {
caches.open('rootCacheNetworkFirst').then(function(cache) {
cache.match('/').then(function(response) {
if (!response) {
cache.add('/');
}
});
});
navigator.serviceWorker.register('/sw.js', {
scope: "/"
});
});
}
Я не могу найти ни одного примера с новыми v3 workbox.routing.setDefaultHandler
и workbox.routing.setCatchHandler
и я застрял: (