21 Stimmen

HTML5 - Cache-Manifest funktioniert gut in Chrome, aber nicht in Firefox und Opera

Ich entwickle eine Webanwendung für die Offline-Nutzung, daher muss ich die Cache-Funktion der Anwendung nutzen.

In Chrome (15.0.874.106) funktioniert alles einwandfrei, aber in Firefox (7.0.1) und Opera (11.52) funktioniert es nicht.

Dies ist meine Cache-Manifest-Datei cache.manifest.php (Ich habe sie auf das absolute Minimum reduziert):

<?php 
    header("Cache-Control: max-age=0, no-cache, no-store, must-revalidate");
    header("Pragma: no-cache");
    header("Expires: Wed, 11 Jan 1984 05:00:00 GMT");
    header('Content-type: text/cache-manifest');
?>CACHE MANIFEST

CACHE:

/app/common/css/reset.css
/favicon.ico

Und dies sind die ersten 4 Zeilen des "Haupt"-HTML-Dokuments:

<!DOCTYPE html> 
<html manifest="/app/mobile/cache.manifest.php"> 
    <head> 
    <title>MyApp Mobile</title> 

Wenn ich versuche, das Cache-Manifest (http://www.myapp.com/app/mobile/cache.manifest.php) in den Browser zu laden, wird die Datei korrekt angezeigt, aber wenn ich versuche, die Seite offline zu laden, erhalte ich die Fehlerseite "Unable to connect". Auch das passiert nur bei Firefox und Opera.

Firebug sagt " 0 items in offline cache "und ich habe keine Möglichkeit gefunden, den Anwendungscache auf DragonFly zu überprüfen.

Ich werde langsam wütend und weiß nicht, wie ich das Problem in Firefox und Opera effektiv beheben kann. Bitte helfen Sie mir.

Danke! Dan

2voto

webinista Punkte 3730

Versuchen Sie zu entfernen:

header("Cache-Control: max-age=0, no-cache, no-store, must-revalidate");
header("Pragma: no-cache");
header("Expires: Wed, 11 Jan 1984 05:00:00 GMT");

so dass Sie nur die Kopfzeile Content-type senden:

<?php header('Content-type: text/cache-manifest'); ?>

ApplicationCache erzwingt Zwischenspeicherung (stark vereinfachend, aber nicht viel). Die ersten drei Header sind Möglichkeiten, Caching zu verhindern.

Opera scheint die Zwischenspeicherung zu verhindern, wenn diese Header vorhanden sind. Die Debugging-Tools von Firefox sind ein wenig seltsam, wenn es um das Debuggen von AppCache geht, aber es ist wahrscheinlich sicher anzunehmen, dass dies das Problem auch dort beheben wird.

2voto

infinityShawn Punkte 21

Für Firefox können Sie diesen kleinen Trick ausprobieren:

<html manifest="/app/mobile/cache.manifest.php?1"> 

Es ist die "?1", die Firefox schließlich dazu bringt, nach der neuesten Datei zu suchen. Das hat bei mir jedenfalls den Trick gebracht. Hoffentlich hilft das.

1voto

ZippyV Punkte 12030

Aus meiner Erfahrung mit dem Offline-Betrieb einer Website auf dem iPad:

  • Der Name der Datei muss mit .manifest
  • Der Mime-Typ muss sein text/cache-manifest
  • Haben Sie eine Version in den Kommentaren Ihres Manifests
  • Erstellen Sie einige Javascript-Funktionen mit window.applicationCache... zu prüfen, ob der Browser eine Änderung im Manifest sieht und den Inhalt neu zu laden, auch die Statusereignisse zu erfassen und sie irgendwo anzuzeigen

Siehe auch: http://developer.apple.com/library/safari/#documentation/iPhone/Conceptual/SafariJSDatabaseGuide/OfflineApplicationCache/OfflineApplicationCache.html#//apple_ref/doc/uid/TP40007256-CH7-SW1

1voto

user1429007 Punkte 308

Ich hatte ein ähnliches Problem. Ich bin sehr spät dran mit meiner Antwort, aber das könnte für andere hilfreich sein. Stellen Sie sicher, dass Sie nicht auf die von AshleysBrian in seiner Antwort beschriebenen Probleme stoßen. Ergänzend dazu

  1. Stellen Sie sicher, dass die Manifestdatei als Typ "text/cache-manifest" bereitgestellt wird.

  2. Probieren Sie es nicht im Modus "Privates Surfen" in Firefox/IE aus. Es funktioniert nur im normalen Browsing-Modus. Aber es funktioniert in beiden Modi in Chrome

  3. Wenn Sie offline sind, kann eine einfache Änderung der URL zu einem Problem führen.

    Eg: http://localhost:8080/app doesn't work on Firefox/IE
    but http://localhost:8080/app/ works in Firefox/IE 

    Beide funktionieren in Chrome

  4. Nutzen Sie diese praktischen Ressourcenbetrachter, um eine detailliertere Perspektive zu erhalten

    about:cache - Firefox
    chrome://appcache-internals/ - Chrome
    Pls fill in if someone knows what is it for IE

0voto

Drona Punkte 6442

Soweit ich weiß, ist der Abschnitt über Offline-Webanwendungen im HTML5-Entwurf des W3C nicht normativ, d. h., er ist noch nicht Teil des formalen HTML5-Standards.

Da die Funktion noch nicht Teil des HTML5-Standards ist, können die verschiedenen Browser unterschiedliche, vom Standard abweichende Implementierungen haben, wenn sie sich überhaupt dafür entscheiden, sie zu implementieren. Möglicherweise unterstützen nicht alle Browser diese Funktion. Verlassen Sie sich nicht auf nicht-normative Funktionen, bis sie Teil des Standards sind.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X