Firefox lädt die Seite nicht aus dem Offline-Cache-Manifest, funktioniert aber in Chrome gut (Tipps zur Fehlerbehebung bei der Cache-Manifest-Version)

8

Das ist im Grunde identisch mit diesen SO Fragen, die nicht beantwortet wurden: Offline Web App nicht im Cache, aber ok in Chrome

Ich habe das gleiche Problem, und ich werde ein bisschen mehr Informationen liefern, weil es jemandem helfen könnte, die geheimnisvollen Geheimnisse und Fallen herauszufinden, die beim Versuch, das Cache-Manifest zu implementieren, auftreten.

Das Problem: Die Seite neu laden / aktualisieren und die Seite sollte vom Offline-Cache neu geladen werden, tut dies aber nicht.

In Chrome 23 funktioniert es einwandfrei: Wenn ich die Verbindung zum Internet abkopple und die Seite aktualisiere, wird es geladen, und auf der Konsole wird das Ereignis Application Cache NoUpdate angezeigt.

Aber Firefox 15.0.1 zeigt mir meine 404-Seite.

Fehlerbehebung (Firefox): Gehen Sie zu Firebug und klicken Sie auf DOM, dann auf applicationCache. Der Status zeigt 0 an, was bedeutet, dass es nicht zwischengespeichert ist (die Seite wurde nicht offline gespeichert).

Fehlerbehebung (Firefox): Gehe zu Firefox Optionen - & gt; Erweitert und betrachten Sie Offline-Webinhalte und Benutzerdaten. Es zeigt, dass meine Domain 1,4 MB Daten für die Offline-Nutzung verwendet. (Dies ist ein guter Ort, um zu prüfen, ob Ihre Seite zwischengespeichert wurde.)

Troubleshooting (Firefox): Öffnen Sie einen neuen Tab und gehen Sie zu "about: cache". Hier sollte eine Überschrift für das Offline-Cache-Gerät angezeigt werden. Hier sehen Sie das Cache-Verzeichnis, in dem Ihre Offline-Cache-Dateien gespeichert sind. Wenn Sie auf Einträge im Listencache klicken, sehen Sie die Dateien in Ihrem Offline-Cache-Manifest.

Es gibt zwei Dinge, die ich hier seltsam finde: 1) Ist das, wenn ich auf eine der Dateien in der Liste klicke, geht es auf eine leere Seite mit der Meldung "Cache entry information Der von Ihnen ausgewählte Cache-Eintrag ist nicht verfügbar." Die Dateien sind jedoch vorhanden und im Cache-Verzeichnis nicht leer. 2) Obwohl alle Dateien aus dem Cache-Manifest aufgelistet sind, ist die von mir aufgerufene Seite hier nicht aufgeführt (in Chrome DevTools wird sie im Manifest als angezeigt Master: Es wird automatisch zwischengespeichert, obwohl es nicht explizit in der Cache-Manifest-Datei aufgeführt ist.)

Folgendes sehe ich, wenn ich online bin: Bei einem kalten (leeren) Cache zeigt die Konsole beim Laden der Seite die Ereignisse checking, downloading, progress und cached an, aber der Cache-Status ist nicht zwischengespeichert. Grundsätzlich werden die Cache-Dateien heruntergeladen, sie können jedoch nicht aufgerufen werden. Firebug DOM applicationCache sagt: 0 Elemente im Offline-Cache (dies widerspricht dem, was in etwa angezeigt wird: Cache und Optionen - & gt; Erweitert). Der Status ist 1, was Leerlauf bedeutet. Wenn ich online auf die Registerkarte "Netz" in Firebug schaue, wird eine GET-Anforderung für die Seite mit einer 200-OK-Antwort angezeigt. Die Einstellung "Expires" zeigt Wed, 31. Dezember 1969, was bedeutet, dass die Seite immer abgerufen wird. Die anderen Dateien zeigen eine 304 Not Modified-Antwort, was bedeutet, dass sie aus dem Browser-Cache und nicht aus dem Offline-Cache geladen werden (die analoge Antwort von Chrome für diese Dateien ist 200 OK (aus Cache), dh sie werden aus dem Offline-Modus geladen Cache, nicht der Browser-Cache).

Wenn ich offline bin: Mit dem Cache "nicht zwischengespeichert" schlägt die GET-Anfrage fehl und lädt die Offline-Fallback 404-Seite mit einer 200 OK (BFCache) -Antwort.

Offenbar wird der Offline-Cache heruntergeladen, da er physisch auf der Festplatte vorhanden ist und Fortschrittsereignisse in der Konsole angezeigt werden, Firefox jedoch das Ereignis im Cache nie auslöst, sodass einige der Ressourcen nicht erfolgreich heruntergeladen wurden. Die Dateien sind alle png, js oder php, also keine verrückten Dateiformate. Chrome lädt die exakt gleichen Dateien problemlos in den Cache. Ich habe auch Mobile Safari ausprobiert und es lädt die Seite erfolgreich aus dem Offline-Cache.

Gibt es bekannte Probleme mit Firefox, die bestimmte Dateitypen nicht zwischenspeichern? Ich verwende die Erweiterung .html.php für einige meiner Dateien. Ich erzeuge das Manifest auch dynamisch mit einer PHP-Datei, so dass es nur Dateien gibt, die vorhanden sind, und Hashes sie, um Änderungen zu erkennen und das Manifest zu aktualisieren.

Nächste Schritte: Ich werde ein leeres Manifest ausprobieren, um zu sehen, ob ich es zum Laufen bringen kann, und dann Dateien einzeln hinzufügen, um zu sehen, welche Datei den Fehler auslöst. Vielleicht mag Firefox die Tatsache nicht, dass ich das Cache-Manifest dynamisch erzeuge, anstatt eine statische Datei manuell zu aktualisieren?

Ich habe viel über die arkanen Feinheiten des Cache-Manifests gelernt, aber ich bin eher ein Hacker als ein Computerexperte. Hat jemand anderes diese Schrulligkeit mit Firefox erlebt?

Der Anfang der Seite:

%Vor%

und dann ist die manifest.php nur

%Vor%

usw. usw. Er verwendet RecursiveDirectoryIterator, um alle Dateien im Verzeichnis abzurufen (mit Ausnahme des Cache selbst, der standardmäßig enthalten ist).

    
edpeciulis 29.09.2012, 17:37
quelle

0 Antworten