Wie kann verhindert werden, dass sich derselbe Servicemitarbeiter über mehrere Seiten registriert?

Ich habe ein Service-Worker-Skript, das wiederholt über mehrere Site-Ebenen registriert wird.

Mit anderen Worten, derselbe Servicemitarbeiter ist für www.site.ca/, www.site.ca/text-text, www.site.ca/example-example und usw. registriert.

Die Seite ist auf PHP aufgebaut, wobei je nach Inhalt unterschiedliche URLs erstellt werden, die so eine Art API-ähnlich sind. Der Grund, warum sich die Service-Worker-Registrierung auf diesen Seiten befindet, ist, dass der größte Teil des Site-Traffics auf diesen Seiten und nicht auf der Homepage landet. Das Ergebnis ist, dass derselbe Servicemitarbeiter auf verschiedenen Seiten mit unterschiedlichen IDs registriert wird.

Hat jemand eine Möglichkeit, mehrere Registrierungen desselben Skripts über mehrere Unterebenen hinweg zu verhindern?

BEARBEITEN

Der Zweck des Service-Workers besteht darin, Benachrichtigungen einzurichten, auch wenn der Benutzer nicht auf der Site ist. Das Problem würde sich auch negativ auf zukünftige Aktualisierungsversuche des Service-Workers auswirken, da mehrere Kopien aktualisiert werden müssten. Das Ergebnis ist, dass immer nur eine Kopie aktualisiert wird, wenn der Benutzer auf einer bestimmten Seite wieder auf der Site landet. Es kann nicht garantiert werden, dass alle Kopien dieser Service-Worker-Datei aktualisiert werden. Das Ergebnis der mehrfachen Kopien hat auch dazu geführt, dass Benutzer stapelweise Benachrichtigungen von der Site erhalten, sodass dies ein Problem darstellt.

BEARBEITEN

Das Folgende ist, was ich bisher habe und nach meinem Verständnis definiert, wo es registriert wird. Das Problem ist jedoch, dass es in der Lage sein muss, sich überall dort zu registrieren, wo eine Person die Site betritt. Daher wurde der Gültigkeitsbereich auf '/' gesetz

Das Problem, das ich lösen möchte, besteht darin, nachfolgende Register derselben Service-Worker-Datei zu verhindern.

Localhost ist ein Platzhalter für die aktuelle Site.

navigator.serviceWorker.register('localhost/service-worker.js', {scope: './'})
.then(initialiseState);

In den Chrome-Entwicklertools zum Debuggen haben die resultierenden Service-Worker das folgende Format:

Scope: localhost / url / stuff /
Registrierungs-ID: 110
Aktiver Arbeiter:
Installationsstatus: AKTIVIERT
Running Status: STOPPED
Script: localhost / service-worker.js
...

Scope: localhost /
Registrierungs-ID: 111
Aktiver Arbeiter:
Installationsstatus: AKTIVIERT
Running Status: STOPPED
Script: localhost / service-worker.js
...

Scope: localhost / url
Registrierungs-ID: 112
Aktiver Arbeiter:
Installationsstatus: AKTIVIERT
Running Status: STOPPED
Script: localhost / service-worker.js
...

Idealerweise möchte ich es irgendwie einfach auf einen Eintrag beschränken.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage