2010-12-29 17 views
7

Tengo una aplicación HTML5 que utiliza el almacenamiento en caché sin conexión con un archivo de manifiesto. La única manera que desencadena la actualización de la memoria caché es un cambio en el archivo de manifiesto en el servidor. Estoy buscando una forma programática de caducar el caché y hacer cumplir la actualización.caché fuera de línea HTML5 caducidad programática

Revisé la especificación, buscando algún método en window.applicationCache para caducar la caché. Pero no encontré ninguno. Hay un método de actualización(), pero se actualizará solo si el caché está vencido (es decir, hay un cambio en el archivo de manifiesto). Entonces eso no ayuda.

¿Alguien sabe una forma programática de caducar la caché de la aplicación y forzar la descarga?

+0

La forma de programa * server-side * es server un '404' para el archivo de manifiesto anterior. Debe usar un nombre de archivo de manifiesto que contenga una cadena de versión para que pueda caducar las versiones anteriores de su manifiesto. – meagar

Respuesta

2

AFAIK, el manifest es el único medio para iniciar una actualización. El sitio web HTML5 Rocks tiene un artículo que habla sobre la actualización programática de la memoria caché (después de una actualización manifest) al llamar inmediatamente al applicationCache.swapCache() después de escuchar un estado UPDATEREADY en appCache.status.

no estoy seguro de si eso será suficiente, pero es una buena lectura (vaya a "Actualización de la caché") - http://www.html5rocks.com/tutorials/appcache/beginner/

2

Es cierto que una actualización se activa sólo por una "actualización" que se manifiestan archivo. Pero algunos navegadores (FF, Chrome) no verifican todos los archivos a los que hace referencia el archivo de manifiesto. Por ejemplo, los archivos jpg no se probarán si el servidor tiene uno más nuevo. Parece que la política general de caché del navegador influye en el proceso de actualización. Para obligar al navegador a verificar todos o algunos de los archivos que se encuentran en el manifiesto de caché, debe etiquetar estos archivos con "Cache-Control: no-cache" en el encabezado HTTP.

Puede controlar la operación de actualización mediante el uso de cookies. Si tiene un script en el servidor que interpreta los comandos de cookie, puede forzar al navegador a obsolar los contenidos del caché a través de javascript. Por ejemplo, si el cliente realiza un cache.update() con una cookie "cache_clear" establecida, el servidor puede responder con el código de respuesta 404 que hace que el navegador obsole el contenido del caché de la aplicación.

Cuestiones relacionadas