Ich versuche herauszufinden, wie der Webbrowser-Cache für Apps mit nur einer Seite richtig gehandhabt wird.
Ich habe ein ziemlich typisches Design: mehrere HTML-, JS- und CSS-Dateien, die das SPA implementieren, und eine Reihe von JSON-Daten, die vom SPA verwendet werden. Probleme treten auf, wenn ich ein Update pushen möchte: Ich aktualisiere den statischen Teil der Site und den Code, der JSON generiert, gleichzeitig, aber bei Client-Browsern wird der statische Teil häufig zwischengespeichert, sodass alter Code versucht, die neuen Daten zu verarbeiten und kann (abhängig von den vorgenommenen Änderungen) auf Probleme stoßen. (Insbesondere scheint der IE aggressiver zu sein als Chrome oder Firefox, wenn es darum geht, zwischengespeichertes JS ohne erneute Überprüfung zu verwenden.)
Wie geht man am besten damit um?
- Stellen Sie sicher, dass meine JSON-Änderungen abwärtskompatibel sind, und gehen Sie davon aus, dass die Browser-Caches in einem angemessenen Zeitraum ablaufen.
- Integrieren Sie eine Art Versionsnummer sowohl in das statische JS als auch in das JSON und führen
window.location.reload(true);
Sie sie aus , wenn sie nicht übereinstimmen. - Ermitteln Sie die geeignete Kombination von Headern (
must-revalidate
oderno-cache
was auch immer; Quellen variieren in Bezug auf die Vorgehensweise), um sicherzustellen, dass Browser bei jedem Ladevorgang immer alle Ressourcen erneut validieren, auch wenn dies einige zusätzliche Roundtrips zum Laden der Site bedeutet. - Verwalte meine Cache-Kontrolle und lösche Header, so dass statische Inhalte verfallen, wenn ich ein Update veröffentlichen möchte.
- Etwas anderes?