Пустой служебный рабочий скрипт - PullRequest
0 голосов
/ 04 июля 2019

Сценарий рабочего сервиса пуст

Я пытаюсь внедрить 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

...