2017-10-20 4 views
0

Ich baue eine statische App mit PouchDB auf Google AppEngine.Service Worker: Dateien werden auf dem Server aktualisiert, aber die alte Version wird im Browser angezeigt

Wenn ich die Website in einem Browserfenster öffne, wird eine Version angezeigt, die ich vor einigen Stunden hochgeladen habe.

Wenn ich die Website in einem Inkognito-Fenster öffne, wird die aktualisierte Version angezeigt (daher glaube ich nicht, dass es sich tatsächlich um einen Fehler in der Konsole handelt).

habe ich eine neue Versionsnummer in app.yaml

ich den gesamten Verkehr auf die neue Version migriert haben.

Ich habe meinen Cache gelöscht, Cookies gelöscht, überprüft meine Bewerbungsdaten, alles. Ich habe sogar Chrome und Firefox neu installiert.

Ich habe gestern meine Python-Version und meinen Google AppEngine Launcher aktualisiert; Das Problem war vor dem Update.

Auch: gerade entdeckt, dass, wenn ich auf die URL der aktualisierten Version http://4.[app-id].appspot.com gehe, zeigt es die richtige, aktualisierte Version an.

Dies geschieht in Chrome, Firefox und Edge.

Edit: wahrscheinlich sollte erwähnt haben, dass meine Website Service Workers und IndexedDB verwendet. Ich nehme an, dass meine Service-Mitarbeiter die vorherige Version zwischenspeichern, aber ich hätte gedacht, dass Ctrl + F5 den Cache löschen und die neue Version anzeigen würde.

+0

@ dan-Cornilescu Dank für das Cache-Problem was darauf hindeutet, - es ist ein Caching-Problem ist, aber die Anwendung Cache anstatt die Browser-Cache. –

Antwort

0

Ich denke, dass es die Servicearbeiter sein müssen, die Seiten zwischenspeichern (was schließlich ist, was sie tun sollen). Das ist eigentlich sehr ärgerlich, wenn Sie sich entwickeln.

Ein Typ namens Rich Harris has documented this behaviour and some workarounds on a Github Gist.

die Seite neu geladen wird nicht so tun, als Sie

erwarten würden, wenn Sie eine Änderung an Ihren Servicemitarbeiter zu machen, dann Neuladen der Seite wird die alte nicht töten und aktivieren Sie die neue ein (es erkennt die Änderung durch jedes Mal die Service-Worker-Datei anfordern und Vergleichen der alten und das neue Byte-für-Byte), was Sie etwas verwirrt, warum Ihre Änderungen nicht in Kraft getreten sind. Das liegt daran, dass das alte Fenster niemals wirklich geschlossen ist, was bedeutet, dass es nie eine Zeit gibt, sie auszutauschen - Sie müssen die Registerkarte vollständig beenden und dann wieder öffnen.

Oder Sie können die Browser haben, dass in devtools, indem Sie auf die Registerkarte Anwendung für Sie tun (in Canary, nicht stabil Chrome noch) nicht, geht an den Dienstleister Abschnitt und Überprüfung ‚Update auf reload‘.

UPDATE (13. November 2017): Diese Funktionalität ist jetzt in Chrome, so dass Sie nicht einmal Canary herunterladen.

Und hier ist, welche Bits der Anwendungs-Cache zu löschen:

clearing the application cache

Verwandte Themen