Я регистрирую сервисного работника для моего многостраничного веб-приложения. Он запрашивается только в первый раз, любые новые страницы запрашивают или обновляет, он не запрашивает файл сервисного работника снова, что означает, что код не выполняется,Я не смог кэшировать свои ресурсы.
Среда: Backend: сервер WCS webspere.
URL работника службы: /wcs/service-worker.js
Структура каталогов: /webContent/service-worker.js
ПРИМЕЧАНИЕ. Что касается URL-адресов, все URL-адреса являются логическими, они не соответствуют физической структуре.Префикс URL всех моих страниц: / wcs /
Ожидание: Каждый раз, когда я открываю веб-сайт, я получаю это сообщение в консоли:
Yay!Рабочее окно загружено 101
Текущее поведение: оно просто показывает сообщение в первый раз (то есть при регистрации)
Код для регистрации:
if ('serviceWorker' in navigator) {
window.addEventListener('load', () => {
navigator.serviceWorker.register('/wcs/service-worker.js')
.then(registration => {
console.log(`Service Worker registered!`, registration.scope);
})
.catch(err => {
console.log(`Service Worker registration failed: ${err}`);
});
});
}
сервер-рабочий.js
importScripts('https://storage.googleapis.com/workbox-cdn/releases/4.3.1/workbox-sw.js');
if (workbox) {
console.log(`Yay! Workbox is loaded ?`);
workbox.routing.registerRoute(
/\.js$/,
new workbox.strategies.NetworkFirst()
);
} else {
console.log(`Boo! Workbox didn't load ?`);
}
приложил образец HTTP-запроса для работника службы. Как заголовок Referer совпадает с запрашиваемым URL-адресом, который является файлом работника службы.