2012-09-20 14 views
7

Tengo un manifiesto de caché con un comentario en élHTML5 App Cache: Manifiesto ist actualizan pero los archivos son tomados de AppCache una vez más

# Version 3.2 

con el fin de actualizar toda la aplicación Me basta con cambiar el número de versión. Funciona, pero:

Cuando actualizo el manifiesto, todo se actualiza correctamente (se llena el nuevo caché) pero los archivos reales se toman UNA vez más del caché (antiguo). cuando recargo dos veces, todo se actualiza. ¿Es este comportamiento correcto? El uso de cromo 21.

Gracias

Respuesta

16

Sí, este es el actual comportamiento "correcto". Esto es lo que sucede:

Cuando se acaba de hacer cambios en el archivo de manifiesto, y se actualiza el navegador, esto es lo que sucede (suponiendo que esté en línea)

  • el navegador carga por primera vez de nuevo todos los archivos en la caché
  • entonces la comprobación del navegador en línea para su archivo de manifiesto
  • detecta que el archivo de manifiesto ha cambiado, se procederá a descargar los nuevos archivos
  • sin embargo, tener en cuenta, en este momento, se seguirá mirando sus 'archivos viejos' porque el navegador ha cargado los archivos antiguos antes de ir en línea para descargar los 'nuevos archivos'
  • si en este punto, si se golpea actualizar de nuevo (segundo tiempo), usted debe obtener los 'nuevos archivos'

Este es actualmente el comportamiento estándar. Algunas personas colocan algunos controladores de eventos para solicitar al usuario que realice otra actualización (después de la primera actualización)

Personalmente, creo que el navegador debe ser responsable de alertar al usuario para que realice otra actualización después de terminar la descarga de los archivos nuevos, pero a la derecha ahora, la mayoría de las personas coloca controladores de eventos desde "window.applicationCache" para activar eventos y ayudar a administrar esto.

Para ver un ejemplo de la utilización de window.applicationCache, entra aquí: http://www.html5rocks.com/en/tutorials/appcache/beginner/

Está bajo la sección "Actualización de la caché".

1

Es posible cambiar al instante la memoria caché como se describe here:

function updateSite(event) { 
    window.applicationCache.swapCache(); 
} 
window.applicationCache.addEventListener('updateready', updateSite, false); 
Cuestiones relacionadas