¿Cómo se fuerza a una aplicación web marcada con favoritos en la pantalla de inicio del iPad para que se actualice?


Me he encontrado con un problema en el que agrego una aplicación web a la pantalla de inicio de mi iPad (iOS 5.0.1 iPad 2), y cuando la abro parece estar almacenando en caché algo detrás de escena, independiente de Safari.

He borrado todo de Safari que está disponible en Configuración (Borrar Historial y Borrar Cookies y Datos), y cuando navego a la aplicación web con Safari veo la aplicación en su estado actual. Sin embargo, si abro el marcador de la pantalla de inicio, obtengo la aplicación en un estado pre-cambiado.

He he visto mucha información sobre el uso de una caché.manifest para almacenar en caché los recursos para su uso sin conexión, pero no estoy seguro de si eso es relevante para esto, ya que me gustaría exactamente lo contrario: nada de caché.

He ido al nivel de ni siquiera probar recursos externos; si cambio alguna cadena de prueba arbitraria en el elemento body de mi índice.html, el marcador de la pantalla de inicio no muestra el texto actualizado.

Author: M Marsh, 2012-01-09

7 answers

Creo que he encontrado una solución:

La nueva versión del sitio solo aparece cuando el índice.cambios en el archivo html.
(el primer archivo que se cargará)

Si abandona el índice.html y solo cambiar algunos js en otros archivos, entonces el sitio no carga la nueva versión.

 5
Author: christophe,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-01-09 21:05:08

Otra solución es agregar ?v = 1 a sus enlaces Javascript y CSS. Por ejemplo:

<link rel="stylesheet" type="text/css" media="all" href="./css/ipad.css?v=1">    
<script src="./js/ipad.js?v=1"></script>

Parece que uno no tiene que actualizar el número cuando su archivo ha cambiado, por lo que puedo decir. Al parecer, en un iPad 2 con la última actualización de software instalada, es suficiente para insinuar algo dinámico.

 24
Author: Hendrik,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-04-02 09:06:03

Cree un cache.manifest que le indique que nunca almacene en caché los recursos a los que hace referencia la página html principal:

CACHE MANIFEST

# Version 1.0000

NETWORK:
*

Úsalo en tu index.html:

<!DOCTYPE html>
<html manifest="cache.manifest">

Ahora cada vez que cambie ese archivo de manifiesto the por ejemplo, aumentando el número de versión en ese comentario the el navegador volverá a descargar index.html también.

Asegúrese de que su página se vuelva a cargar cuando se actualice la caché:

<script>
function updateSite(event) {
    window.location.reload();
}
window.applicationCache.addEventListener('updateready', updateSite, false);
</script>

La Biblioteca para desarrolladores de Safari tiene buena documentación .

 9
Author: Tom,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-05-02 04:54:57

Para nuestras aplicaciones webclip iOS estamos utilizando lo siguiente. Hasta ahora no hay problemas de caché:

1 - Tenemos un archivo de manifiesto de caché llamado 'manifest.appcache.php "

<?php
    header("Cache-Control: max-age=0, no-cache, no-store, must-revalidate");
    header("Pragma: no-cache");
    header("Expires: Thu, 01 Jan 1970 00:00:01 GMT");
    header('Content-type: text/cache-manifest'); 
?>

CACHE MANIFEST

CACHE:
# Don't cache anything
FALLBACK:
# Nothing
NETWORK:
# Request everything from server
*

2-En el archivo HTML tenemos:

<!DOCTYPE html>
<html lang="en" manifest="manifest.appcache.php">
    <head>
...
 5
Author: Rabi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-01-24 09:55:37

Tengo una aplicación angular que estoy desarrollando y me encontré con este problema al intentar probarlo en un iPad. Al agregar una consulta sin sentido al final de la url, pude obtener una versión actual de todos los activos.

Www.somesite.com?meaninglessquery

 2
Author: Timothy J Blevins,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-08-26 23:25:42

Puede forzar la recarga de la aplicación web abierta sin usar la caché si tiene abierto el Inspector Web de Safari y apunta a su aplicación web abierta. Con el Inspector Web activo, pulse SHIFT + COMMAND + R (en un Mac). Es posible que tenga que actualizar una vez más para activar los activos actualizados.

 2
Author: Sarah,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-10-17 11:05:52

He tenido suerte al apagar el dispositivo. Había cambiado el manifiesto de la aplicación; pero presumiblemente, necesita una actualización o algo para que el navegador lo busque. Desde que eliminé el navegador Chrome, no hay botón de reinicio. Intentamos "cerrar" la aplicación (jaja) y deslizar la aplicación; pero supongo que iOS tiende a mantener las cosas funcionando de todos modos. Apagar hizo el truco para que se actualice.

Tal vez haya algún gesto para refrescar que no conozco. Tal vez uno debería meter un poco " check para actualizaciones " actualizar botón en aplicaciones web en caché.

 0
Author: NathanSmutz,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-01-16 18:38:09