0

Obwohl ich vertraut bin mit Sw-precache und Sw-toolbox Bibliotheken, noch Puzzle auf, wie man dynamische Abhängigkeiten beim Erstellen von Progressive Web App mit Angular.Wie können Abhängigkeiten von dynamischen URLs durch Service Worker aufgelöst werden?

Ich habe bundle.js, bundle.css und einige statische Vorlagen für meine Anwendung mit dem Sw-Precache-Build-Prozess zwischengespeichert. (Nehmen Sie alle meine Vorlagen (HTML-Dateien) sind abhängig von bundle.js und bundle.css)

  1. Was passiert, wenn ich meine Vorlage aktualisieren, die nicht vorgezwischengespeichert? Wie stelle ich sicher, dass bundle.js/css in Verbindung mit meiner Vorlage aktualisiert wird.

  2. Was passiert, wenn ich meine Vorlage, die bereits im Cache gespeichert ist, aktualisiere? Wird es immer in Verbindung mit vorcached bundle.js/css-Dateien aktualisiert?

  3. Letzter Anwendungsfall, Wenn meine Vorlage bereits im Cache gespeichert ist, aber ein Inline-Skript mit dem Attribut src vorhanden ist und diese Skriptdatei nirgendwo zwischengespeichert wird. Angenommen, ich habe sowohl in der Vorlage als auch in der Skriptdatei einige Änderungen vorgenommen. Welcher Caching-Ansatz sollte ich befolgen, um sicherzustellen, dass die Vorlagendatei in Verbindung mit der Skriptdatei aktualisiert wird.

Wir sind nicht reine Architektur App-Schale folgen, entworfen Es ist wie Single-Seiten-App Angularjs mit

Antwort

1

Sw-Vorabzwischenspeichern für die Dateiänderungen aktualisieren, einen neuen Service Arbeiter generieren und wenn Sie bereitstellen Updates für Bundle js oder CSS, sollten Sie auch Ihren neuen Sw-Precache generierten Service-Mitarbeiter bereitstellen.

+0

Service-Mitarbeiter hat seinen eigenen Lebenszyklus zu aktualisieren. Was, wenn Vorlagen, die nicht precached, aus dem Netzwerk abgerufen und es ist abhängig CSS/js (preached) wird zu diesem Zeitpunkt nicht aufgrund sone aktiviert Ereignis nicht ausgelöst. ? Hast du mich verstanden? –

+0

Nun, wenn Sie die HTML-Seite Server, wird es nicht diese neuen Assets anfordern, bis der Service Worker aktualisiert wird, die die HTML-Seite aktualisiert, die dann die neuesten Assets zieht. Wenn Sie dynamische Inhalte verwalten möchten, dann sollten Sie in sw-Precache Folgendes betrachten: https://github.com/GoogleChrome/sw-precache#runtimecaching-arrayobject –

0

Als eine allgemeine Idee, Hash alle Ressourcen, die Sie Precaching und die Durchführung eines Hash-Hashes und diese Digest in der Service-Worker, also wenn eine der Abhängigkeiten ändern, ändert sich der Digest und Ihre Service-Worker wird Aktualisieren Sie das Auslösen eines neuen Installationsereignisses. Macht das Sinn?

+0

Ja, es macht Sinn. Aber ich mache mir Sorgen darüber, was passiert, wenn meine Vorlagen nicht zwischengespeichert werden und die zugehörige js/css-Datei vorab zwischengespeichert wird. Dann wird es einen Fall geben, wenn Änderungen an den Vorlagen vorgenommen werden, die zugewiesene js/css wird nicht mit sofortiger Wirkung ausgewählt. ? –

+0

Verändert die Template-Änderung Ihre Bundles in irgendeiner Weise? Wenn dies der Fall ist, ändern sich die Hashwerte für Ihre Bundles und Ihr Service-Mitarbeiter aktualisiert sich. Wenn nicht, sollten Sie den Hash Ihrer Vorlagen zum Hash der Hashes hinzufügen. – Salva