Сценарий рабочего сервиса пуст
Я пытаюсь внедрить service workers
в свое веб-приложение, однако заметил, что ничего не работает. Я получаю подтверждение, что сервисный работник запускается, однако, когда я пытаюсь просмотреть его в инструментах Chrome, он показывает пустой документ. Все попытки консольного журнала и т.д. не увенчались успехом, что наводит меня на мысль, что файл действительно пустой, несмотря на то, что он явно не был.
Я попытался отменить регистрацию работника сервиса и выполнить обновление вручную.
СЦЕНАРИЙ НА ИНДЕКС
if ('serviceWorker' in navigator) {
navigator.serviceWorker.register('sw_basic.js')
.then(function(reg) {
// registration worked
console.log('Registration succeeded. Scope is ' + reg.scope);
}).catch(function(error) {
// registration failed
console.log('Registration failed with ' + error);
});
}
СЦЕНАРИЙ РАБОТНИКА ОБСЛУЖИВАНИЯ
var CACHE_NAME = 'my-site-cache-v1';
var urlsToCache = [
'./', './index.php',
'./profile.php',
'./support.php',
'./img/dance3-min.png',
'./css/agency',
'./css/agency.min.css',
'./css/eventform.css',
'./css/loginmodal.css',
'./css/profile.css',
'./css/support.css',
'./css/table.css',
'./css/timer.css'
]
self.addEventListener('install', function(event) {
event.waitUntil(
caches.open(CACHE_NAME)
.then(function(cache) {
console.log('Opened Cache');
return cache.addAll(urlsToCache);
})
);
});
self.addEventListener('fetch', function(event)) {
event.respondWith(
caches.match(event.request)
.then(function(response) {
if (response) {
console.log('Successfully fetched resource from chache: ${event.request.url}');
return response;
} else {
console.error('Failed to fetch resource: ${event.request.url}');
}
return fetch(event.request);
}
)
)
}
РЕДАКТИРОВАТЬ * Я получил его для обновления, изменив имя файла js и вручную отменив регистрацию работника службы в Chrome, однако это не всегда обновляет этот способ, иногда требуя несколько попыток
Я все еще чувствую, что должен быть лучший способ сделать это, и во всех уроках / документации кажется, что он должен установить новую и активировать, как только все вкладки выгружены, но даже не обновленная обновлена вообще.
EDIT *
Я заметил, что работник службы пытается установить, а затем исчезает.
Пример - Сервисный работник № 12 активен и работает. Я обновляю, а затем для второго работника службы # 24 устанавливается, а затем вдруг его нет. На данный момент я действительно не знаю, что происходит с другими каналами, говорят, что это проблема с максимальным возрастом кэша, но я установил его в 0 в htaccess
Cache-Control: max-age= 0
EDIT *
Я попытался перенести работника сервиса на другую страницу, удалить кеширование и просто попытаться обновить его.
В настоящее время мой индекс выглядит как
<html>
<head>
<script>
if ('serviceWorker' in navigator) {
navigator.serviceWorker.register('/beta/sw.js', {scope: '/beta/'})
.then(function(reg) {
// registration worked
console.log('Registration succeeded. Scope is ' + reg.scope);
}).catch(function(error) {
// registration failed
console.log('Registration failed with ' + error);
});
}
</script>
</head>
online page v2.0
</html>
и работник службы выглядит как
self.addEventListener('install', function(event) {
console.log("SW installed");
});
self.addEventListener('activate', function(event) {
console.log("SW activated");
});
self.addEventListener('fetch', function(event) {
console.log("Hijacked Signal");
event.respondWith(new Response("offline page"));
});
Это работает, когда пользователь обновляется после посещения страницы, текст меняется с онлайн на оффлайн. Проблема возникает, когда я изменяю нужный текст (например, в автономный режим 2.0). Любой, кто уже посетил веб-сайт, работает со старым сервисным работником и, таким образом, будет видеть его в автономном режиме, а не в автономном режиме
ссылка на страницу, если кто-то хочет посмотреть, что происходит
https://pakcollegelive.tk/beta/index.php