2012-09-20 8 views
7

genommen habe ich ein Cache-Manifest mit einem Kommentar in ihmHTML5 App Cache: Manifest ist aktualisiert, aber Dateien von AppCache noch einmal

# Version 3.2 

, um alle zu aktualisieren die App mich einfach die Versionsnummer ändern. Es funktioniert, aber:

Wenn ich das Manifest aktualisieren, wird alles korrekt aktualisiert (neuer Cache ist gefüllt), aber die eigentlichen Dateien werden noch einmal aus dem (alten) Cache genommen. Wenn ich zweimal neu lade, wird alles aktualisiert. Ist dieses Verhalten korrekt? Mit Chrom 21.

Dank

Antwort

16

Ja, das ist das aktuelle "richtige" Verhalten. Dies ist, was passiert:

Wenn Sie Änderungen an der Manifest-Datei einfach gemacht, und Sie den Browser aktualisieren, das ist, was passiert, (vorausgesetzt, Sie online sind)

  • der Browser lädt zunächst wieder alle Dateien im Cache
  • dann der Browser-Check online für Ihre Manifest-Datei
  • es erkennt, dass die Manifest-Datei geändert hat, wird es dann die neuen Dateien
  • jedoch im Auge zu behalten, zu diesem Zeitpunkt zum Download geht Sie wird immer noch deine 'alten Dateien' anschauen, weil hat der Browser Online die alten Dateien geladen, bevor sie die ‚neuen Dateien‘
  • , wenn an dieser Stelle zum Download, wenn Sie wieder treffen aktualisieren (2. Mal), sollten Sie die ‚neuen Dateien‘ erhalten

Diese ist derzeit das Standardverhalten. Einige Leute setzen einige Event-Handler, um den Benutzer aufzufordern, eine weitere Aktualisierung (nach der ersten Aktualisierung)

Ich persönlich denke, der Browser sollte verantwortlich sein, den Benutzer zu warnen, eine neue Aktualisierung nach dem Download der neuen Dateien, aber richtig Jetzt setzen die meisten Leute Ereignishandler aus dem "window.applicationCache" ein, um Ereignisse auszulösen, die dabei helfen, dies zu verwalten.

an einem Beispiel sehen window.applicationCache zu verwenden, gehen Sie hier: http://www.html5rocks.com/en/tutorials/appcache/beginner/

es ist unter dem „Aktualisieren des Cache“ Abschnitt.

1

Es ist möglich, um sofort die Cache-Swap als here beschrieben:

function updateSite(event) { 
    window.applicationCache.swapCache(); 
} 
window.applicationCache.addEventListener('updateready', updateSite, false); 
Verwandte Themen