2012-08-24 9 views
14

Ich habe um mit der Cache-Manifest-Datei zu spielen und zu versuchen, es zu bekommen Caching der Seite zu stoppen, die es auf erklärt wird.HTML5 Offline-Manifest Stop-Caching Seite Es wird erklärt, auf

Von HTML5 Rocks

jeder Seite der Benutzer navigiert, die ein Manifest enthalten wird implizit in die Anwendungscache

Ace hinzugefügt werden. Ich möchte, dass die Manifest-Datei bestimmte Artefakte zwischenspeichert, von denen eine eine Offline-Version meiner Online-HTML-Seite mit einer einzelnen Seite ist, die Online-Version jedoch NICHT zwischengespeichert wird.

+0

Ich bin immer noch ein bisschen neu zu HTML5, aber ich bin überrascht, dass es keine gut definierten Weg des Caching der Seite einschließlich dem Manifest zu verhindern ist. –

+0

Ja, ich auch. Ich hätte es vorgezogen, wenn die Manifest-Datei mehr Einfluss hätte, und nur das, was Sie deklarieren, wird zwischengespeichert. Es sollte nicht mit der Seite verknüpft sein. Das ist einfach versteckte Funktionalität. – Greg

+0

Mein erster Gedanke „Hinzufügen es zum Netz: Abschnitt“ war, aber nach einigen Tests dies nicht funktioniert (im IE zumindest - ich aufgehört Tests, sobald ich einen Fall foudnd, wenn es nicht funktioniert). Das ist meiner Meinung nach einfach falsch - etwas, das explizit erklärt wird, sollte das Standardverhalten immer überschreiben. Ich bin immer noch sehr zögerlich über die Verwendung des Offline-Krams wegen solcher Probleme. – Morvael

Antwort

17

Dies ist, wie ich das Problem gelöst. Mein Manifest-Datei

CACHE MANIFEST 
# Version 0.1 

CACHE: 
# Minimised Styles 
/css/style.0.1.min.css 

# Minimised JavaScript 
/js/script.0.1.min.js 

FALLBACK: 
//offline.html 

NETWORK: 
* 

Hinweis alles, was zu mydomain.com/ geht, wenn offline wird /offline.html gehen jetzt (aus dem Cache)

Nun, wie nur cachen, was in der Manifestdatei, ohne die Online-Seite unter mydomain.com/.

gebe folgende iframe am unteren Rand der Seite auf mydomain.com/

<iframe src="/offline.html" style="display: none;"></iframe> 

Und manifest="myapp.appcache" in offline.html setzen.

Dies bedeutet, wenn mydomain.com/ geladen ist, wird es nie zwischengespeichert (da es kein Manifest-Attribut auf der Seite gibt). Dann geht der Browser goes die offline.html über den iframe und alles andere, was Sie wollen Caching wird mit den Anweisungen in der Manifest-Datei, einschließlich der offline.html Seite wegen der Anwesenheit des HTML-Attributs hinzugefügt.

Der einzige Overhead, den ich sehen kann, ist auf der ersten Seite laden, der Iframe wird eine zusätzliche HTTP-Anfrage machen, aber sobald es zwischengespeichert ist, wird es aus dem Cache, also kein großes Problem.

+0

Das scheint für Chrome zu funktionieren, aber ich glaube nicht, dass es für FireFox v14.0.1 funktioniert. Es erhält alles aus dem Netzwerk für die Hauptindex.htm-Datei (die kein Manifestattribut hat, aber einen iFrame mit der Offline.htm-Datei hat, die ein Manifest enthält). – patorjk

+0

Scheint, für mich zu arbeiten ... – Greg

+0

Nach dem Upgrade auf FF 15 hat es begonnen, für mich zu arbeiten. Ich bin mir nicht sicher, ob etwas mit meinem Setup nicht stimmt, aber jetzt funktioniert es. – patorjk