it-swarm.com.de

Wann und wie aktualisiert sich ein PWA selbst?

Soweit ich weiß, generiert der Browser nach dem Klicken auf "Zum Homescreen hinzufügen" auf der PWA-Website eine APK-Datei unter Verwendung der bereitgestellten Manifestdatei und der Quellen und installiert sie wie eine normale App.

Mir ist aufgefallen, dass die App beim Aktualisieren der Website auch den aktualisierten Inhalt anzeigt, was darauf hindeutet, dass die App nur ein Wrapper für den Zugriff auf die Website ist. Ich habe auch festgestellt, dass das Update einer Website nicht sofort angezeigt wird. Ich gehe davon aus, dass dies auf das interne Caching zurückzuführen ist.

Meine Frage ist, sind meine Annahmen richtig? Oder allgemeiner, wann und wie werden PWAs aktualisiert und gibt es eine Möglichkeit, ein Update auf einem Client-Computer zu erzwingen?

22
Tobias Würth

Kein Cache-Szenario (kein Servicemitarbeiter): Ihre PWA-App wird nur zwischengespeichert, wenn Sie den Servicemitarbeiter verwenden. Mit Manifest.json können Sie Ihre Web-App mit einem Symbol zum Startbildschirm hinzufügen und ohne Adressleiste öffnen. Wenn Sie keinen Servicemitarbeiter haben oder Ihr Browser dies nicht unterstützt, wird die Webseite jedes Mal neu geladen. Kein Cache.

Cache-On-Szenario (mit Servicemitarbeiter): Vorausgesetzt, Sie haben Servicemitarbeiter konfiguriert, können Servicemitarbeiter durch verzögertes Laden oder Vorabrufen der Dateien, für die sie konfiguriert sind, im Cache speichern Caching (Sie können das Caching von HTML-, CSS- und Bilddaten in JSON/XML-API-Antworten einschließen oder ausschließen.).

Nach dem anfänglichen Cache verwendet der Service-Worker den Cache, um Ihre Apps-Netzwerkanforderung basierend auf Cache-Ansatz zu bedienen, den Sie von unten implementiert haben.

  • cache, der auf das Netzwerk zurückgreift
  • Netzwerk fällt zurück in den Cache
  • Cache dann Netzwerk

Die meisten Apps wählen Precache aus Gründen der Leistung und suchen beim Laden nach neuen Dateien, wenn gefundene Änderungen bei der nächsten Sitzung geladen werden oder Benutzer zum Aktualisieren auffordern. Bei dieser Lösung hat jede Datei eine lange Hash-Zeichenfolge für jede Datei, die vom Service-Worker zwischengespeichert wird. Beim Laden jeder Anwendung wird Hash-Code vom Server abgerufen, um zu ermitteln, welche Datei aktualisiert werden muss, und derselbe wird in einem separaten Service-Worker-Thread aktualisiert. Sie können dies auf der Registerkarte "Netzwerk" feststellen -> Antwort des Servicemitarbeiters in chrome developer tools).

Wenn Sie sich für den Netzwerk-Faust-Ansatz entscheiden, können Sie vermeiden, dass beim ersten Laden alte Inhalte angezeigt werden, verlieren jedoch erhebliche Leistungsvorteile, die mit dem Zwischenspeichern einhergehen.

21
Anand