Swapcache se asegura de que las llamadas "posteriores" a los recursos almacenados en caché se tomen de la nueva caché. Significado posterior después de swapcache. Para ver esto en acción intente configurar la propiedad src de un img dinámicamente después de la llamada swapcache en el evento updateready (para que el navegador lo cargue en ese momento particular ). Asegúrese de que esta imagen no esté cargada en otro lugar de la página, ya que distorsionará esta prueba. Ahora cambie la imagen y cambie los archivos de manifiesto (para forzar la recarga de los archivos en caché). Vuelva a cargar la página en su navegador. Ahora debería ver la nueva versión de la imagen en su página representada. Ahora comenta la llamada a swapcache. Realice un cambio en el archivo de manifiesto y vuelva a cargar la página y, por lo tanto, todos los recursos. Actualice la página nuevamente (para asegurarse de tener una versión del nuevo caché). Ahora cambie la imagen de nuevo y cambie el manifiesto. Vuelve a cargar la página: ahora ves la versión anterior de la imagen. En el último caso, el navegador terminó de cargar las nuevas versiones en caché, pero como no se llamó a swapcache, la imagen todavía se tomó de la memoria caché anterior.
Si no realiza ninguna carga dinámica de recursos en su página, el swapcache no tiene ningún efecto.
En particular, si vuelve a cargar la página en el controlador de eventos updateready que llama a swapcache primero no tiene ningún efecto, ya que volver a cargar la página la obtendrá del nuevo caché de todos modos.
En 'updateready', muestro un aviso de" Actualización disponible, haga clic para reiniciar ahora "y realizo' location.reload(); 'al hacer clic. Si no hacen clic, la aplicación se actualiza por sí misma la próxima vez que se carga. No entiendo cómo puedo actualizar la aplicación sin volver a cargarla, con 'swapCache()'. Y * con * reloading, no necesito 'swapCache()' de todos modos. Todavía no entiendo cuando es necesario. –
Obtiene aún más raro que eso: en Chrome obtengo el evento 'updateready' y cuando llamo a' swapCache() 'dentro del controlador, Chrome se queja' Uncaught InvalidStateError: no se pudo ejecutar 'swapCache' en 'ApplicationCache': no hay caché de aplicación más nuevo para cambiar a ' – Mati