2010-12-29 10 views
7

Ich habe eine HTML5-Anwendung, die Offline-Caching mit einer Manifest-Datei verwendet. Die einzige Möglichkeit, die Aktualisierung des Caches auszulösen, ist eine Änderung der Manifestdatei auf dem Server. Ich bin auf der Suche nach einer programmatischen Möglichkeit, den Cache auszulöschen und das Update zu erzwingen.HTML5 Offline-Cache Programmablauf

Ich ging durch die Spezifikation, auf der Suche nach einer Methode auf window.applicationCache den Cache ablaufen. Aber habe keine gefunden. Es gibt eine update() -Methode, die jedoch nur dann aktualisiert wird, wenn der Cache abgelaufen ist (d. H. Es liegt eine Änderung in der Manifestdatei vor). Das hilft also nicht.

Jeder weiß, eine programmatische Art und Weise des Ablaufs der Anwendung Cache und zwingt Download?

+0

Der * serverseitige * programmatische Weg besteht darin, einen '404' für die alte Manifestdatei zu betreiben. Sie sollten einen Manifestdateinamen verwenden, der eine Versionszeichenfolge enthält, sodass Sie alte Versionen Ihres Manifests ablaufen lassen können. – meagar

Antwort

2

AFAIK, das manifest ist das einzige Mittel, um ein Update einzuleiten. Die HTML5 Rocks-Website enthält einen Artikel, in dem es darum geht, den Cache programmatisch zu aktualisieren (nach einer manifest-Aktualisierung), indem sofort applicationCache.swapCache() aufgerufen wird, nachdem ein UPDATEREADY-Status in appCache.status abgefragt wurde.

Ich bin mir nicht sicher, ob das genügt, aber es ist ein gutes Buch (nach unten scrollen zu „Aktualisieren des Cache“) - http://www.html5rocks.com/tutorials/appcache/beginner/

2

Es ist wahr, dass ein Update nur durch ein „aktualisierte“ manifest ausgelöst wird Datei. Einige Browser (FF, Chrome) überprüfen jedoch nicht alle Dateien, auf die die Manifestdatei verweist. Zum Beispiel wird jpg's nicht getestet, ob der Server einen neueren hat. Es scheint, dass die allgemeine Caching-Richtlinie des Browsers den Aktualisierungsprozess beeinflusst. Um den Browser zu zwingen, alle oder einige der Dateien im Cache-Manifest zu überprüfen, müssen Sie diese Dateien im HTTP-Header mit "Cache-Control: no-cache" versehen.

Sie können den Aktualisierungsvorgang mithilfe von Cookies steuern. Wenn Sie ein serverseitiges Skript haben, das die Cookie-Befehle interpretiert, können Sie den Browser über JavaScript zu veralteten Cache-Inhalten zwingen. Wenn der Client beispielsweise eine cache.update() ausführt, bei der ein Cookie "cache_clear" gesetzt ist, antwortet der Server möglicherweise mit dem Antwortcode 404, wodurch der Browser den Inhalt des Anwendungs-Cache veraltet.