2012-08-24 10 views
14

Ho giocato con il file manifest della cache e ho cercato di arrestarlo nella cache della pagina su cui è stato dichiarato.HTML5 Offline Manifest Stop Caching della pagina È dichiarato

Da HTML5 Rocks

qualsiasi pagina, l'utente si sposta a che includono un manifesto saranno implicitamente aggiunto alla cache dell'applicazione

Ace. Voglio che il file manifest memorizzi nella cache specifiche risorse, una delle quali è una versione offline della mia app HTML per pagina singola online, ma NON per memorizzare nella cache la versione online.

+0

Sono ancora un po 'nuovo in HTML5, ma sono sorpreso del fatto che non esiste un modo ben definito per impedire il caching della pagina incluso il manifest. –

+0

Sì, anche a me. L'avrei preferito se il file manifest avesse più influenza e solo quello che dichiarerai verrà memorizzato nella cache. Non dovrebbe essere collegato alla pagina. Questa è semplicemente funzionalità nascosta. – Greg

+0

Il mio primo pensiero è stato "Aggiungi alla sezione NETWORK:", ma dopo alcuni test questo non funziona (almeno in IE - ho smesso di test appena ho trovato un caso quando non funzionava). Questo è semplicemente sbagliato a mio parere - qualcosa che viene esplicitamente dichiarato dovrebbe sempre sovrascrivere il comportamento predefinito. Sono ancora molto cauto nell'usare le cose offline a causa di problemi come questo. – Morvael

risposta

17

Ecco come ho risolto il problema. Il mio file manifesto

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: 
* 

nota tutto ciò che va a mydomain.com/ in modalità offline passerà ora al /offline.html (dalla cache)

Ora, come memorizzare nella cache solo ciò che è nel file manifest, senza includere la pagina online su mydomain.com/.

inserire il seguente iframe nella parte inferiore della pagina a mydomain.com/

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

e mettere in manifest="myapp.appcache" offline.html.

Ciò significa che quando viene caricato mydomain.com/ non verrà mai memorizzato nella cache (poiché non esiste alcun attributo manifest sulla pagina). Quindi il browser va a ottenere il file offline.html tramite l'iframe e tutto il resto che si desidera venga aggiunto nella cache utilizzando le istruzioni nel file manifest, inclusa la pagina offline.html a causa della presenza dell'attributo HTML.

L'unico sovraccarico che riesco a vedere è il caricamento della prima pagina, l'iframe effettuerà una richiesta HTTP aggiuntiva, ma una volta memorizzato nella cache lo prenderà dalla cache, quindi non un grosso problema.

+0

Sembra funzionare per Chrome, ma non sembra che sia in grado di farlo funzionare per FireFox v14.0.1. Continua a ricevere tutto dalla rete per il file index.htm principale (che non ha un attributo manifest - ma ha un iframe con il file offline.htm che ha manifest). – patorjk

+0

Sembra funzionare per me ... – Greg

+0

Dopo l'aggiornamento a FF 15 ha iniziato a lavorare per me. Non sono sicuro se qualcosa fosse sbagliato con il mio setup, ma ora funziona. – patorjk

Problemi correlati