AngularJS Browser-Cache-Probleme
Guten morgen, ich habe eine web-Anwendung in der Produktion Umwelt vor. Die Benutzer verwenden es jeden Tag, wenn ich ein update veröffentlichen, und ein Benutzer kommt zurück, um die web-Anwendung sieht in der alten version der web-Anwendung. Er muss den browser aktualisieren, laden Sie die neue version. Wie kann ich dieses problem lösen? Ich kann nicht sagen, Hunderte von Benutzern, die Seite zu aktualisieren, jedes mal wenn ich ein update veröffentlichen (3-4 mal in der Woche).
InformationsquelleAutor der Frage CaTourist | 2015-05-23
Du musst angemeldet sein, um einen Kommentar abzugeben.
Eine einfache Lösung wäre, Abfrage-Zeichenfolgen, die timestamp-oder session-id auf Ihre Dateien.
Z.B., in unsere spring-Anwendungen, wir verwenden Sie einfach :
Können Sie implementieren die gleiche Lösung in Ihrem server-spezifische Umsetzung zu.
InformationsquelleAutor der Antwort Manish Kr. Shukla
Den klassischen cache-problem. Wenn nichts anderes gesagt wird (durch den webserver) des Browsers wird der cache Vermögenswerte basierend auf den Dateien Namen. Also, wenn es sieht das gleiche script/style/image mit dem gleichen Namen wird es Drei hundert vier und dienen der zwischengespeicherten version. Es gibt mehrere Möglichkeiten, um dieses, Sie können:
Konfigurieren Sie den webserver zu erzählen-Browser nicht zum Zwischenspeichern der Datei. Dies ist natürlich ineffizient, da der Benutzer zum download der gleichen Datei von Zeit zu Zeit wieder.
Anhängen eines query-string-parameter an den Dateinamen wie
my-angular-code.js?x=123
wieder ineffizient.Fingerabdruck Ihres Vermögens. Dies ist fein säuberlich erklärt, in der Schiene " Asset-Pipeline Dokumentation. Es gibt mehrere Möglichkeiten, um dies zu erreichen, gibt es grunt-tasks und gulp Aufgaben auch für diese verfügbar. Im wesentlichen ist der Prozess der änderung der Datei den Namen nur, wenn sich der Inhalt ändert, zwingt den browser, um betrachten Sie es als eine neue Datei.
InformationsquelleAutor der Antwort juco
Wenn Sie mit HTML5, dann können Sie die Anwendungs-Cache. Es wird automatisch nach updates suchen und Sie können den Benutzer auffordern, um den cache zu aktualisieren.
Hier sind einige gute tutorials wie es zu benutzen:
Führer eines Anfängers zum Verwenden der Application Cache
Mit dem application cache
Nehmen wir mal dieses offline (offline web applications)
InformationsquelleAutor der Antwort Brent Washburne
Der erste Schritt wäre zu verstehen, was server-Seite jetzt. Verstehen und konfigurieren Sie die
Cache-Control
undEtag
. Zwar können Sie mit query-string-Parameter, Datei-Fingerabdruck ist eine bessere Technik da proxy-Server erlaubt wird zum Zwischenspeichern der Datei.Die Idee ist, dass Sie Ihre Dokumente, die sich ändern können (wenn Sie haben eine Eckige app dies wahrscheinlich nur Ihre
index.html
)no-cache
und aggressiv-cache-Ressourcen, die das Dokument verweist. Bei der Freigabe ein neuer build, Ihre Ressourcen sind alle umbenannt und wenn eine Anfrage kommt, in der alles wie erwartet funktioniert.Benutze ich grunt-rev in meinem Angular app. Funktioniert Super.
InformationsquelleAutor der Antwort Andy Gaskell