2012-08-05 5 views
11

Ich komme zu diesem Problem ziemlich oft, wo einige der Benutzer einen beschädigten Anwendungscache (HTML 5) haben.Bereinigen und aktualisieren HTML5-Anwendungscache durch Javascript

Ich aktualisiere die Manifest-Datei jedes Mal, wenn es eine neue Version noch einige Male gibt einige Benutzer einen beschädigten Anwendungscache.

ich einen solchen Fall möchte ich vollständig löschen, was ist in ihrer Anwendung Cache und laden Sie alle frischen Inhalte vom Server.

Gibt es einen Weg, um Javascript zu verwenden?

+0

Haben Sie sich diesen Beitrag angesehen? http://stackoverflow.com/questions/1011605/clear-the-cache-in-javascript oder diese: http://stackoverflow.com/questions/8155064/how-to-programmatics-empty-browser-cache –

+0

so wir können die HTML 5-Version des Anwendungscache auch nicht aktualisieren? – Tushar

+0

Siehe meine Antwort unter –

Antwort

13

Nach dem folgenden Artikel auf

http://www.w3schools.com/html5/html5_app_cache.asp

gibt es drei Möglichkeiten, um auf die Anwendung Cache wich zurückgesetzt, diese sind:

  1. Der Benutzer löscht den Browser-Cache
  2. Die Manifestdatei wurde geändert
  3. Der Anwendungscache wird programmgesteuert aktualisiert

Mehr Informationen über programmatisch die Anwendung Cache Aktualisierung kann hier gefunden werden:

http://www.html5rocks.com/en/tutorials/appcache/beginner/

Es sieht ungefähr so ​​aus:

var appCache = window.applicationCache; 

appCache.update(); //this will attempt to update the users cache and changes the application cache status to 'UPDATEREADY'. 

if (appCache.status == window.applicationCache.UPDATEREADY) { 
    appCache.swapCache(); //replaces the old cache with the new one. 
} 
+8

Verwenden Sie nicht w3schools als Referenz ... [w3fools] (http://w3fools.com) – Andreas

+0

Ich habe immer noch das gleiche Problem, denke ich, weil die Manifest-Datei hat sich nicht geändert. Daher wird der gespeicherte Inhalt nicht aktualisiert. Nur die Manifestdatei wird erneut abgerufen. – Tushar

+2

@Andreas sie sind nur eine der vielen Seiten, die diese Informationen zur Verfügung stellen, und es ist korrekt. Das könnte Ihr Problem sein, der Cache wird nicht gelöscht, wenn Sie sich nicht auf eine der oben genannten Bedingungen beziehen. –

7

Dieser ist ziemlich alt, aber als ich eine sehen falsche antwort wurde gewählt, ich fühlte mich wie geben einen hinweis ....

Wenn man die lo lo hat Wenn Sie sich an die Spezifikation halten, können Sie sehen, dass der Code den Browser nicht zwingen kann, den Cache neu zu laden, es sei denn, das Manifest wird geändert, und dann ist "appCache.status == window.applicationCache.UPDATEREADY" wahr.

Schau mal hier http://www.w3.org/TR/2011/WD-html5-20110525/offline.html

„updateready Die Ressourcen im Manifest aufgeführt wurden neu redownloaded, und das Skript kann swapCache() verwenden, um den neuen Cache zu wechseln.“

So lesen Sie es sorgfältig, finden Sie, dass der ApplicationCache zu diesem Status gelangt, wenn die Ressourcen nur heruntergeladen ... das ist .. ein vorheriges "Download" -Ereignis aufgetreten ist ... und davor eine "Überprüfung "....