2012-08-24 12 views
14

He estado jugando con el archivo de manifiesto de caché y tratando de detener el almacenamiento en caché de la página en la que está declarado.HTML5 Offline Manifest Stop Caching Página Se declara en

De HTML5 Rocks

página, el usuario navega a que incluyen un manifiesto se añadirá implícitamente a la caché de la aplicación

Ace. Quiero que el archivo manifiesto almacene en caché artefactos específicos, uno de los cuales es una versión fuera de línea de mi aplicación en línea de una sola página HTML, pero NO para almacenar en caché la versión en línea.

+0

Todavía soy un poco nuevo en HTML5, pero me sorprende que no haya una forma bien definida de evitar el almacenamiento en caché de la página, incluido el manifiesto. –

+0

Sí, yo también. Hubiera preferido que el archivo de manifiesto tuviera más influencia, por lo que solo lo que declaras se almacenará en caché. No debe estar vinculado a la página. Eso es simplemente una funcionalidad escondida. – Greg

+0

Mi primer pensamiento fue "Añádalo a la RED: sección", pero después de algunas pruebas, esto no funciona (en IE al menos, dejé de hacer pruebas tan pronto como escuché un caso cuando no funcionaba). Eso es simplemente incorrecto en mi opinión: algo que explícitamente se declare siempre debe anular el comportamiento predeterminado. Todavía soy muy tentativo sobre el uso de cosas sin conexión debido a problemas como este. – Morvael

Respuesta

17

Así es como he resuelto el problema. Mi archivo de manifiesto

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 todo lo que va a mydomain.com/ cuando esté desconectado ahora ir a /offline.html (de caché)

Ahora, cómo almacenar en caché sólo lo en el archivo de manifiesto, sin incluir la página en línea en mydomain.com/.

ponga el siguiente marco flotante en la parte inferior de la página en mydomain.com/

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

y poner en manifest="myapp.appcache" offline.html.

Esto significa que cuando mydomain.com/ se carga, nunca se almacenará en caché (ya que no hay ningún atributo de manifiesto en la página). Luego, el navegador obtiene el archivo offline.html a través del iframe y todo lo demás que desea almacenar en caché se agrega usando las instrucciones en el archivo de manifiesto, incluida la página offline.html debido a la presencia del atributo HTML.

La única sobrecarga que puedo ver está en la carga de la primera página, el iframe hará una solicitud HTTP adicional, pero una vez que se almacena en caché lo sacará de la memoria caché, por lo que no es un problema enorme.

+0

Esto parece funcionar para Chrome, pero parece que no puedo hacer que funcione para FireFox v14.0.1. Sigue obteniendo todo de la red para el archivo index.htm principal (que no tiene un atributo de manifiesto, pero tiene un iframe con el archivo offline.htm que tiene un manifiesto). – patorjk

+0

Parece que funciona para mí ... – Greg

+0

Después de actualizar a FF 15, ha comenzado a funcionar para mí. No estoy seguro de si algo estaba mal con mi configuración, pero ahora funciona. – patorjk