Frage

Heute wurde hier eine Frage angehoben und ich habe keine offensichtliche Antwort.

gehen davon aus, dass wir alle Ressourcendateien (CSS und JavaScript) verketten und abbauen und sie in der "Master-Seite" deklarieren.

Auf einer mehrseitigen App, wenn eine CSS-Datei ändert, wird er auf der nächsten vollständigen Seitenlast aufgeladen.

Auf einer einzelnen-Seite-App kann der Benutzer tagelang funktionieren und niemals die Hauptseite aufladen, in der die CSS-Dateien deklariert werden.Der Benutzer sieht niemals die Änderungen an, bis ein Strg-F5 ausgegeben wird.

Ich bin sicher, dass jemand schon daran gedacht hat und eine Erfahrung mitzuteilen, um zu teilen :)

Für mich ist für mich keine Option.Erstens, weil es überkill ist und zweitens, weil nicht alle meine Kunden die Technologie unterstützen.Derselbe Grund gilt für alle Websockets-Rückfällige ... Ich werde meine Server nicht immer wieder schlagen.

Also, irgendwelche Ideen?:)

BTW, wir verwenden Angularjs, wenn dies für eine bestimmte Lösung helfen kann.

danke!

War es hilfreich?

Lösung

Ich habe das gleiche Problem. Meine Lösung, die kennzeichnet und möglicherweise nicht auf Ihre Kriterien antwortet:

Wenn ich meine Front-App und meine Server-App verpackte, teile ich eine Konfigurationsdatei mit der aktuellen Version der Front-App.

Frontseite: 75% meiner Routen ändern sich implizit ein Webservice anrufen (Routenänderung auflösen). Also füge ich jedes Mal, wenn ich meinen Server anrufe, einen benutzerdefinierten HTTP-Header (oder einen GET / POST-PARAM) mit der Client-Version der Front-App.

serverseite: Ich vergleichen Sie die Front-App-Version (das in dem Browser des Benutzers, der letztzeitiger Benutzer erfrischt / geladen hat, der Spa geladen ist) mit der Front-App-Version der freigegebenen Konfigurationsdatei:

    .
  • Wenn Version übereinstimmt: Ich tue nichts.
  • Wenn die Version nicht übereinstimmt, senden Sie einen benutzerdefinierten HTTP-Status-Fehlercode (z. B. 418)

dann vorderseite: Ich habe einen Antwortinterzeptor hinzugefügt, der einen beliebigen 418-Fehlercode abfängt und eine Kraftauffrischung der gesamten App

durchführen

das ist es. Grundsätzlich ist das Ereignis, das "Überprüfen", wenn die Front-App-Version die neueste ist, ein Routenänderung (das a WS über AJAX ruft). Sie könnten jedoch ein unendliches $-Intervall hinzufügen, das jeweils 5 Minuten ein dediziertes WS anruft ... Ich kann bei Bedarf einen gewünschten Code hinzufügen.

hoffe das hilft;)

Andere Tipps

Angenommen, Sie verwenden Angularjs 'Routing über $ Route Service und Provider, können Sie mit dem generationspoLDICETAGCODE-Ereignis verwenden, um eine Serveranforderung auszuführen, wenn er signifikante Änderungen vorliegen, die geändert werden müssen. Wenn es dann gibt, können Sie ein Window.Location.Reload () tun, um die Seite neu zu aktualisieren und alle aktualisierten Ressourcen und HTMLs zu erhalten.

Der folgende Prozess kann in Abhängigkeit davon geändert werden, wie Sie es implementieren möchten:

1 . Setzen Sie eine Konfigurationsdatei in Ihrem Server ein, um die Version der App anzuzeigen. Sie können auch, dass Sie auch verschiedene Versionen für verschiedene Dateien zuordnen, aber da Sie alle Ihre Ressourcendateien verkettet haben, dann können Sie Ihre Versionsoptionen in Ihrer Konfiguration einschränken.

2 . Erstellen Sie einen Dienst, der alle erforderlichen Informationen (Versionen von Dateien vom Server enthält) und -Methoden, um eine Serveranforderung an Ihren Server auszuführen, um die im Dienst gespeicherten aktuellen Dateiversionen zu überprüfen.

3 . Verwenden Sie $ routechangesuccess Ereignis, um eine Serveranforderung mit dem von Ihnen erstellten Dienst auszuführen In Schritt 2 , wenn die Anforderung eine gültige Bestätigung zurückgegeben hat, dass Änderungen vorgenommen, dann führen Sie die FORCE-Seite über den generationspflichtigen Relading über den $routeChangeSuccess.

Ich beschloss, auch hier meine endgültigen Gedanken als Antwort hinzuzufügen:

Wir gingen jetzt für eine reduzierte Lösung.

Da wir einen "Proxy-Service" haben, der (erneut für jetzt wieder ist), der einzige, der mit dieser Anwendung interagiert, haben wir die Anwendungsversion auf dem HTTP-Header aller Antworten hinzugefügt.Wenn wir eine neuere Version erhalten, erscheint ein Popup, der den Benutzer benachrichtigt, und eine vollständige Seitenaktualisierung wird ausgegeben ...

Diese Lösung funktioniert nicht für Anwendungen, die keinen eigenen "privaten" Service haben.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top