HTML5 Appcache-Manifest permanent entfernen

8

Ich habe einen Application Cache auf einer Site eingerichtet und kurz darauf meinen Weg aggressiver, den ich realisiert habe. Ich möchte es entfernen. Permanent.

Ich habe gelesen, dass die Übergabe einer geänderten, vollständig leeren Manifestdatei mit dem richtigen MIMETYPE den Cache entfernt. Bearbeiten: Siehe unten. Maurices Antwort ist die einzige konsequente Lösung.

Ist dies die schnellste und effektivste Lösung? Gibt es einen besseren Weg?

Und wenn Sie angeben können, ob Sie diese Funktionalität bereits vorher mit Ihrer Antwort verwendet haben, würde ich es sehr zu schätzen wissen - mehrdeutige Dokumentation und Eigenarten, die sich während des Tests nicht zeigten, haben mich in diese Situation gebracht. p>     

Jason Goldstein 11.01.2012, 06:51
quelle

4 Antworten

16

Der Trick besteht darin, zuerst die Manifest-URL in Ihrer HTML-Seite auf einen ungültigen Wert zu setzen, damit der Browser beim Laden eine 404 erhält. Stellen Sie sicher, dass auch das ursprüngliche Manifest geändert wird. Andernfalls wird die neue HTML-Seite nie heruntergeladen. Nachdem der Browser die neue Manifest-URL nicht herunterladen konnte, können Sie die Manifesteinstellung vollständig von der HTML-Seite entfernen.

Irgendwie verrückt, aber das scheint die einzige zuverlässige Methode zu sein, eine bestehende Manifest-Referenz zu entfernen.

    
Maurice 11.01.2012, 10:10
quelle
5

Ab dem 25.06.2015 habe ich festgestellt, dass die Rückgabe eines 404 den vorhandenen Appcache für Firefox nicht löscht. Wenn ein leerer Appcache zurückgegeben wird, wird der vorhandene Appcache für Chrome nicht gelöscht. Die Rückkehr des folgenden Appcaches schien in IE, Chrome, Safari und Firefox zu funktionieren, obwohl unklar ist, durch welchen Mechanismus die Deaktivierung des impliziten Caching von index.html durchgeführt wird.

%Vor%     
Gregory Cosmo Haun 26.06.2015 22:40
quelle
2

Ich hatte ein ähnliches Problem, bei dem ich den Appcache nach einem fehlgeschlagenen Update zurücksetzen musste (d. h. eine vollständige Entfernung des Appcaches erzwingen, damit er von Grund auf neu erstellt werden kann).

Aufbauend auf Maurices Antwort stelle ich dem Benutzer einen normalerweise versteckten Link zur Verfügung, der eine nicht zwischengespeicherte Seite öffnet, die einfach ein Cookie schreibt und den Benutzer zur vorherigen Ansicht zurückbringt. Dieses Cookie teilt dem Server mit, dass beim nächsten Aufruf des Appcache ein 404 zurückgegeben wird, und der Benutzer wird dann durch den normalen Anmeldeprozess geführt. Wenn die Anwendung erfolgreich ausgeführt wird, wird der Cookie gelöscht und die Zwischenspeicherung wird wie gewohnt fortgesetzt.

Wenn ein Cookie auf diese Weise verwendet wird, werden Probleme behoben, bei denen die Hauptversion der Ansicht im Appcache hängen geblieben ist, was es schwierig macht, eine brechende URL in manifest="" einzufügen, dh die Manifest-URL bleibt gleich, aber der Server antwortet mit einem 404 bis anders gesagt.

    
notreadbyhumans 02.07.2013 20:41
quelle
1

Wenn Sie es nur von Ihrer Seite entfernen möchten, können Sie dies über den Browser tun. Ich kann mich nur daran erinnern, wie man es in Chrome macht. Gehe zu chrome: // appcache-internals / & amp; Entferne die gewünschte (n) Datei (en). Sie können Cache & amp; Cookies & amp; das sollte funktionieren. Ich habe das nur in Chrome getestet.

Wenn Sie es für alle Betrachter entfernen möchten, weiß ich nicht, ob sie eine alte zwischengespeicherte Version haben, aber ich weiß, dass das Beibehalten des Attributs mit einer falschen Verknüpfung, wie Maurice vorgeschlagen hat, die einzige Möglichkeit wäre Ich würde wissen; obwohl, ich bin mir sicher, dass es einen anderen Weg gibt, am ehesten mit jQuery.

    
Crystal Miller 26.02.2014 21:05
quelle

Tags und Links