| [ Web Proxy ] |
| Viewing: https://developer.mozilla.org/de/docs/Web/API/Service_Worker_API | [Back] [Original] |
Get to know MDN better
Dieser Inhalt wurde automatisch aus dem Englischen bersetzt, und kann Fehler enthalten. Erfahre mehr ber dieses Experiment.
Hinweis: Diese Funktion ist in Web Workers verfgbar.
Service Worker agieren im Wesentlichen als Proxy-Server, die zwischen Webanwendungen, dem Browser und dem Netzwerk (wenn verfgbar) liegen. Sie dienen unter anderem dazu, die Erstellung effektiver Offline-Erlebnisse zu ermglichen, Netzwerk-Anfragen abzufangen und basierend auf der Verfgbarkeit des Netzwerks geeignete Manahmen zu ergreifen sowie Assets auf dem Server zu aktualisieren. Zudem ermglichen sie den Zugriff auf Push-Benachrichtigungen und Hintergrund-Sync-APIs.
Hinweis: Service Worker sind eine Art von Web Worker. Sehen Sie sich Web Workers fr allgemeine Informationen ber Workertypen und Einsatzmglichkeiten an.
Ein Service Worker ist ein ereignisgesteuerter Worker, der gegen eine Origin und einen Pfad registriert ist. Er besteht aus einer JavaScript-Datei, die die zugehrige Webseite oder -site steuern kann. Dabei werden Navigations- und Ressourcenzugriffe abgefangen und modifiziert, sowie Ressourcen sehr granular zwischengespeichert, um Ihnen die vollstndige Kontrolle darber zu geben, wie Ihre App in bestimmten Situationen reagiert (die offensichtlichste davon ist, wenn das Netzwerk nicht verfgbar ist).
Service Worker laufen in einem Worker-Kontext: Daher haben sie keinen Zugriff auf das DOM und laufen auf einem anderen Thread als das Haupt-JavaScript, das Ihre App antreibt. Sie sind nicht blockierend und fr vollstndige Asynchronitt ausgelegt. Daher knnen APIs wie synchrones XHR und Web Storage nicht innerhalb eines Service Workers verwendet werden.
Service Worker knnen keine JavaScript-Module dynamisch importieren, und import() wird einen Fehler verursachen, wenn es im globalen Bereich eines Service Workers aufgerufen wird. Statische Importe mit der import-Anweisung sind erlaubt.
Service Worker sind nur in sicheren Kontexten verfgbar: Das bedeutet, dass ihr Dokument ber HTTPS bereitgestellt wird, obwohl Browser auch http://localhost als sicheren Kontext behandeln, um die lokale Entwicklung zu erleichtern. HTTP-Verbindungen sind anfllig fr bsartige Code-Injektionen durch Manipulator-in-the-Middle (MITM)-Angriffe, und solche Angriffe knnten schlimmer sein, wenn diese leistungsstarken APIs Zugriff gewhren.
Hinweis: In Firefox knnen Sie Service Worker zu Testzwecken ber HTTP (unsicher) ausfhren; aktivieren Sie einfach die Option Enable Service Workers over HTTP (when toolbox is open) im Options- / Zahnradmen der Firefox DevTools.
Hinweis: Im Gegensatz zu frheren Versuchen in diesem Bereich wie AppCache, machen Service Worker keine Annahmen darber, was Sie zu tun versuchen, die dann scheitern, wenn diese Annahmen nicht genau richtig sind. Stattdessen geben Service Worker Ihnen viel grere Kontrolle.
Hinweis: Service Worker verwenden intensiv Promises, da sie im Allgemeinen auf Antworten warten werden, nach denen sie mit einer erfolgten oder fehlgeschlagenen Aktion reagieren. Die Architektur von Promises ist ideal dafr.
Ein Service Worker wird zunchst ber die Methode ServiceWorkerContainer.register() registriert. Bei Erfolg wird Ihr Service Worker auf den Client heruntergeladen und versucht, eine Installation/Aktivierung (siehe unten) fr vom Benutzer in der gesamten Origin oder einem von Ihnen angegebenen Teilbereich aufgerufene URLs vorzunehmen.
An diesem Punkt folgt Ihr Service Worker dem folgenden Lebenszyklus:
Der Service Worker wird sofort heruntergeladen, wenn ein Benutzer zum ersten Mal eine von einem Service Worker kontrollierte Seite aufruft.
Danach wird er aktualisiert, wenn:
Eine Installation wird versucht, wenn festgestellt wird, dass die heruntergeladene Datei neu ist entweder abweichend von einem bestehenden Service Worker (byteweise verglichen) oder der erste Service Worker, der auf dieser Seite/Site entdeckt wurde.
Wenn dies das erste Mal ist, dass ein Service Worker verfgbar gemacht wurde, wird die Installation versucht, und nach einer erfolgreichen Installation wird er aktiviert.
Wenn ein vorhandener Service Worker verfgbar ist, wird die neue Version im Hintergrund installiert, aber noch nicht aktiviert zu diesem Zeitpunkt wird sie als wartender Worker bezeichnet. Sie wird erst aktiviert, wenn keine weiteren Seiten geladen sind, die noch den alten Service Worker verwenden. Sobald keine weiteren Seiten geladen werden mssen, aktiviert sich der neue Service Worker (wird zum aktiven Worker). Die Aktivierung kann frher erfolgen, indem ServiceWorkerGlobalScope.skipWaiting() verwendet wird und bestehende Seiten vom aktiven Worker mit Clients.claim() beansprucht werden knnen.
Sie knnen das install-Ereignis abhren; eine Standardaktion besteht darin, Ihren Service Worker bei dessen Auslsung zur Nutzung vorzubereiten, zum Beispiel durch Erstellen eines Caches mit der eingebauten Speicher-API und dem Platzieren von Assets darin, die Sie fr den Offline-Betrieb Ihrer App bentigen.
Es gibt auch ein activate-Ereignis. Der Zeitpunkt, an dem dieses Ereignis ausgelst wird, ist im Allgemeinen eine gute Gelegenheit, alte Caches und andere mit der vorherigen Version Ihres Service Workers verknpfte Dinge zu bereinigen.
Ihr Service Worker kann auf Anfragen ber das FetchEvent-Ereignis reagieren. Sie knnen die Antwort auf diese Anfragen beliebig modifizieren, indem Sie die Methode FetchEvent.respondWith() verwenden.
Hinweis:
Da install-/activate-Ereignisse eine Weile dauern knnen, bis sie abgeschlossen sind, bietet die Service Worker-Spezifikation eine waitUntil()-Methode. Sobald sie fr install oder activate-Ereignisse mit einem Promise aufgerufen wird, werden funktionale Ereignisse wie fetch und push warten, bis das Promise erfolgreich aufgelst ist.
Fr ein vollstndiges Tutorial, das zeigt, wie Sie Ihr erstes einfaches Beispiel aufbauen, lesen Sie Verwendung von Service Worker.
Service Worker knnen unntige Leistungskosten verursachen wenn eine Seite nach lngerer Zeit zum ersten Mal geladen wird, muss der Browser warten, bis der Service Worker hochfhrt und luft, um zu wissen, welche Inhalte geladen werden sollen und ob sie aus einem Cache oder dem Netzwerk stammen sollen.
Wenn Sie bereits im Voraus wissen, wo bestimmte Inhalte abgerufen werden sollen, knnen Sie den Service Worker vollstndig umgehen und Ressourcen sofort abrufen. Die Methode InstallEvent.addRoutes() kann verwendet werden, um diese und andere Anwendungsflle zu implementieren.
Service Worker sollen auch fr solche Dinge verwendet werden, wie:
In Zukunft werden Service Worker in der Lage sein, mehrere andere ntzliche Dinge fr die Webplattform zu tun, die sie nher an die Machbarkeit nativer Apps bringen. Interessanterweise knnen und werden andere Spezifikationen beginnen, den Service Worker-Kontext zu nutzen, z.B.:
CacheReprsentiert den Speicher fr Request / Response Objektpaare, die als Teil des Lebenszyklus eines ServiceWorker zwischengespeichert werden.
CacheStorageReprsentiert den Speicher fr Cache Objekte. Es liefert ein Hauptverzeichnis aller benannten Caches, auf die ein ServiceWorker zugreifen kann, und pflegt eine Zuordnung von Zeichenfolgennamen zu entsprechenden Cache Objekten.
ClientReprsentiert den Anwendungsbereich eines Service Worker-Clients. Ein Service Worker-Client ist entweder ein Dokument in einem Browserkontext oder ein SharedWorker, der von einem aktiven Worker gesteuert wird.
ClientsReprsentiert einen Container fr eine Liste von Client Objekten; die Hauptmethode, um auf die aktiven Service Worker-Clients an der aktuellen Origin zuzugreifen.
ExtendableEventVerlngert die Lebensdauer der install und activate Ereignisse, die auf den ServiceWorkerGlobalScope gesendet werden, als Teil des Lebenszyklus des Service Workers. Dies stellt sicher, dass keine funktionalen Ereignisse (wie FetchEvent) an den ServiceWorker gesendet werden, bevor es Datenbankschemata aktualisiert, veraltete Cacheeintrge lscht usw.
ExtendableMessageEventDas Ereignisobjekt eines message Ereignisses, das auf einen Service Worker ausgelst wird (wenn eine Kanalnachricht im ServiceWorkerGlobalScope von einem anderen Kontext empfangen wird) verlngert die Lebensdauer solcher Ereignisse.
FetchEventDer Parameter, der an den onfetch Handler bergeben wird, FetchEvent reprsentiert eine Abrufaktion, die auf dem ServiceWorkerGlobalScope eines ServiceWorker ausgelst wird. Es enthlt Informationen ber die Anfrage und die resultierende Antwort sowie die Methode FetchEvent.respondWith(), die es uns ermglicht, eine beliebige Antwort an die kontrollierte Seite zurckzugeben.
InstallEventDer Parameter, der an eine install Event-Handler-Funktion bergeben wird, die InstallEvent Schnittstelle reprsentiert eine Installationsaktion, die im ServiceWorkerGlobalScope eines ServiceWorker ausgelst wird. Als Kind von ExtendableEvent stellt es sicher, dass funktionale Ereignisse wie FetchEvent whrend der Installation nicht gesendet werden.
NavigationPreloadManagerBietet Methoden zur Verwaltung des Preloadens von Ressourcen mit einem Service Worker.
ServiceWorkerReprsentiert einen Service Worker. Mehrere Browsing-Kontexte (z.B. Seiten, Worker etc.) knnen mit demselben ServiceWorker Objekt assoziiert sein.
ServiceWorkerContainerBietet ein Objekt, das den Service Worker als Gesamteinheit im Netzwerksystem darstellt, einschlielich Mglichkeiten zur Registrierung, Abmeldung und Aktualisierung von Service Workern sowie zum Zugriff auf den Status von Service Workern und ihren Registrierungen.
ServiceWorkerGlobalScopeReprsentiert den globalen Ausfhrungskontext eines Service Workers.
ServiceWorkerRegistrationReprsentiert eine Service Worker-Registrierung.
WindowClientReprsentiert den Anwendungsbereich eines Service Worker-Clients, der ein Dokument in einem Browserkontext ist, kontrolliert von einem aktiven Worker. Dies ist eine spezielle Art von Client Objekt, mit einigen zustzlichen Methoden und Eigenschaften.
Window.caches und WorkerGlobalScope.cachesGibt das CacheStorage Objekt zurck, das mit dem aktuellen Kontext verknpft ist.
Navigator.serviceWorker und WorkerNavigator.serviceWorkerGibt ein ServiceWorkerContainer Objekt zurck, das Zugriff auf die Registrierung, Entfernung, Aktualisierung und Kommunikation mit den ServiceWorker Objekten fr das zugehrige Dokument bietet.
| Spezifikation |
|---|
| Service Workers Nightly |
Der Bauplan fr ein besseres Internet.
Teile dieses Inhalts sind 19982026 von einzelnen mozilla.org-Mitwirkenden. Inhalte sind verfgbar unter einer Creative-Commons-Lizenz.
| Web Proxy Viewer | New URL | Original Page |