2016-04-28 10 views
15

Ich lese Service-Mitarbeiter für Offline-Caching ähnlich wie Browser-Caching. Warum sollte man Service-Mitarbeiter für dieses Caching bevorzugen? Selbst das Browser-Caching prüft, ob die Datei geändert wurde oder nicht, und wird dann vom Cache aus bedient, während der Service-Mitarbeiter dasselbe aus unserem Code behandelt. Aber standardmäßig hat Browser diese Funktion, warum Service-Worker bevorzugen?Warum Service Worker zum Zwischenspeichern verwenden, wenn der Browser-Cache das Zwischenspeichern verarbeitet?

Antwort

9

Service-Mitarbeiter geben Ihnen die vollständige Kontrolle über Netzwerkanforderungen. Sie können alles, was Sie für das Fetch-Ereignis wünschen, zurückgeben, es muss nicht der frühere oder aktuelle Inhalt dieser bestimmten Datei sein.

Wenn jedoch der Browser-Cache Ihre Anforderungen erfüllt, sind Sie nicht verpflichtet, Service Worker zu verwenden.

Sie werden auch für Dinge wie Push-Benachrichtigungen verwendet.

Dokumentation: https://developer.mozilla.org/en-US/docs/Web/API/Service_Worker_API, https://developer.mozilla.org/en-US/docs/Web/API/Service_Worker_API/Using_Service_Workers

+0

Ich zweite die "vollständige Kontrolle über Netzwerkanforderungen." Service-Mitarbeiter können beispielsweise Header und eine Ressource mit einer anderen Ressource (z. B. offline) bearbeiten, die der Browser-Cache nicht ausführen kann. Wenn Sie nur einen Standard-Browser-Cache benötigen, gibt es keinen Grund, ihn als Service-Mitarbeiter neu zu implementieren - es wird nicht schneller oder einfacher zu verwenden sein. – mjs

1

Ich wollte die Punkte teilen, die ich beobachtet, während sie durch Servicemitarbeiter Dokumentation gehen und umgesetzt. Der Browser-Cache ist anders. Da der Service-Mitarbeiter den Offline-Cache unterstützt, greift die Webanwendung auf den zwischengespeicherten Inhalt zu, obwohl das Netzwerk nicht verfügbar ist.

  1. Service-Mitarbeiter wird native Erfahrung geben.
  2. Der Service-Mitarbeiter kann den DOM-Inhalt nicht ändern, aber dennoch können die Seiten in seinem Bereich bereitgestellt werden. Mit Hilfe von Ereignissen wie postMessage kann auf die Seite zugegriffen werden und DOM kann geändert werden.
  3. Service-Mitarbeiter benötigen keine Benutzerinteraktion oder Webseite. Es läuft im Hintergrund.
+0

"Service-Mitarbeiter wird native Erfahrung geben." Was meinst du damit? – Monsignor

+0

Native Erfahrung durch Rich-Offline-Erfahrungen, regelmäßige Hintergrundsynchronisationen, Push-Benachrichtigungen – vbharath

Verwandte Themen