javascript - La aplicación web independiente de iOS no puede cargar contenido nuevo después de actualizar a iOS7
html caching (7)
Parece que hacer un cambio en el archivo de manifiesto (como agregar un número de versión) debería hacer que la aplicación vuelva a cargar el contenido: la aplicación web móvil no borra la memoria caché correctamente
Debe agregar un número de versión a sus URL de CSS y JS para resolver problemas de almacenamiento en caché. por ejemplo, file.css? v = 2
Saludos, Z.
Tengo una aplicación de JavaScript que ejecuto en modo independiente (agregada a la pantalla de inicio) en un iPad.
He actualizado de iOS 6 a iOS 7 y ahora mi aplicación siempre está cargando el mismo contenido, mantiene el almacenamiento en caché. Incluso si cargo mis archivos JS y CSS dinámicamente en cada carga de aplicación con una marca de tiempo única como parámetro. Necesitaba eso para estar seguro de que los archivos JS y CSS no se almacenan en caché y funcionó en iOS 6.
Intenté lo siguiente:
eliminar la aplicación de la pantalla de inicio
Eliminar cookies y datos del sitio web.
reiniciando iPad
Tuve
manifest="manifest.appcache"
quitado eso (luego lo intenté de nuevo 1 a 3)He añadido las siguientes etiquetas meta
<meta http-equiv="cache-control" content="no-cache">
y
<meta http-equiv="pragma" content="no-cache">
Desde que lo desarrollo localmente y esa página se sirve desde mi PC de escritorio, he intentado cambiar la IP de mi PC y luego probé 1 a 3, pero no resolví mi problema.
Entonces, todos mis cambios no aparecen, no importa si están en el archivo HTML o JS.
Obviamente, hay algunos cambios en la forma en que iOS maneja las aplicaciones independientes. ¿Qué me estoy perdiendo?
¿Qué hay de actualizar manualmente la memoria caché y luego volver a cargar la página:
<script>
if(window.applicationCache) {
applicationCache.onnoupdate = function() { alert("debug: manifest not changed!") };
applicationCache.onupdateready = function() { location.reload() };
applicationCache.update();
}
</script>
Encontré este script php para generar un archivo manifest.cache correcto para el navegador
Hice hace un tiempo tal vez ayuda.
comprueba automáticamente si algunos archivos se modifican y obliga al navegador a volver a cargar el nuevo archivo manifest.cache.
manifest.php
<?php
header("Cache-Control: max-age=0, no-cache, no-store, must-revalidate");
header("Pragma: no-cache");
header("Expires: Wed, 11 Jan 1984 05:00:00 GMT");
header(''Content-Type: text/cache-manifest'');
echo "CACHE MANIFEST/n";
$hashes="";
$dir = new RecursiveDirectoryIterator(".");
foreach(new RecursiveIteratorIterator($dir) as $file){
if ($file->IsFile()&&$file!="./manifest.php"&&substr($file->getFilename(),0,1)!="."){
echo $file."/n";$hashes.=md5_file($file);
}
}
echo "NETWORK:/n";
echo "*/n";
echo "FALLBACK:/n";
echo "online.html fallback.html/n";
echo "# Hash: " . md5($hashes) . "/n";
?>
atm no puedo probar en ios 7
Encontré este tutorial. Resulta que ios7 almacena los datos del sitio web en un lugar diferente al de las cookies y la sección de datos.
http://www.imore.com/how-clear-stored-website-data-ios-7-safari
- Inicie la aplicación Configuración desde la pantalla de inicio de su iPhone o iPad.
- Desplácese hacia abajo y toque en Safari.
- Ahora desplácese hasta la parte inferior y toque Avanzado.
- Toque en los datos del sitio web. Observe que aquí puede ver cuánto espacio está ocupando los datos del sitio web de su iPhone o iPad.
- Desplácese hasta la parte inferior nuevamente y toque Eliminar todos los datos del sitio web.
- Confirme una vez más que desea eliminar todos los datos.
Intenta borrar manualmente el caché . Puede hacerlo a través de la configuración.
Intente eliminar su aplicación de la pantalla de inicio, luego vaya al url de la aplicación en safari pero al final de su url en safari agregue algo como ?v=2
. Luego haga clic en ir, y añada a la pantalla de inicio. Esto asegurará que esté obteniendo una versión sin caché de su css y javascript del servidor.
También puede agregar un número aleatorio al final de sus llamadas de javascript y css en su html. Esto asegurará que todas las solicitudes futuras de la aplicación en la pantalla de inicio obtengan versiones de css y javascript.
Simplemente elimine la referencia del manifiesto en su HTML. es decir, no utilice un archivo de manifiesto.
Y mientras estás en ello, ¿tu archivo de manifiesto se sirve con el tipo de mímet correcto?