2012-10-10 26 views
22

Parece que Apple ha cambiado la forma en que funcionan las aplicaciones web de pantalla principal/independientes en iOS 6. Según varias publicaciones de blog (example) estas aplicaciones ahora tienen su propio espacio dedicado para almacenar sus archivos en caché, sqlite dbs, almacenamiento local, etc. en lugar de compartir con el navegador Safari como antes.iOS6 - ¿Cómo borrar la memoria caché de la aplicación de pantalla principal/independiente?

Antes de iOS 6 la hora de desarrollar solía ir a través del siguiente procedimiento religiosamente para borrar la caché ...

  1. Quitar aplicación desde la pantalla de inicio.
  2. Cierre todas las páginas/pestañas en Safari.
  3. Finalmente "Borrar cookies & Datos" o "Borrar datos" en "Configuración"> "Safari".

Lamentablemente, ahora que Apple ha movido las postas, este mismo procedimiento no parece funcionar. Después de borrar, aunque mis cambios se recogen en Safari, cuando agrego a la pantalla de inicio y ejecuto la aplicación, el código HTML antiguo, JS, etc. aún se recogen.

¿Alguien sabe cómo limpiar completamente la memoria caché en iOS 6?

+0

Pasando por la misma frustración ahora. Me encantaría escuchar cualquier actualización. – drogon

+0

Parece un problema bastante persistente. ¿Has probado la configuración: ''?Si que no encaja, intente un manifiesto AppCache: '' manifiesto de caché [salto de línea] 'RED:' [salto de línea] '*' – Sev

+1

¿Está desarrollando la aplicación que desea borrar la memoria caché para, o está solo un usuario? –

Respuesta

-1

acaba de establecer la petición se pasa a la vista web a NSURLRequestReloadIgnoringLocalCacheData

NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url]; 
[request setCachePolicy:NSURLRequestReloadIgnoringLocalCacheData]; 
[self.webView loadRequest:request]; 
+3

Esta es una aplicación web a la que se accede desde Safari, no es una aplicación nativa que utiliza una vista web. – BoltClock

+0

Whoops. Mi error, lol, lo siento. –

+2

+1: Aún así encontré esto útil. Gracias. –

0

La única manera de hacer frente a este momento, es de esperar, pero no es una solución. Si cambia el nombre del archivo, extraerá el nuevo código. Sin embargo, si lo cambia de nuevo al nombre antiguo antes de que se borre la caché, se usará el código anterior. El caché se actualiza periódicamente y se actualizará eventualmente. Simplemente me sucedió esto con un archivo CSS que se negó a cambiar. El tiempo lo arreglará, pero si solo lo necesita para actualizarse para la prueba, un cambio de nombre funcionará.

+0

¿Qué archivo necesita el cambio de nombre? Si cambio el nombre del archivo de caché, ¿corregirá eso todo? –

0

Si el dispositivo iOS6 tiene un jailbreak aplicado, puede usar ssh para eliminar el contenido de la carpeta "/private/var/mobile/Library/Caches/com.apple.webapp".

La próxima vez que inicie la aplicación web, todos los archivos se volverán a descargar del servidor web.

4

Primero conecte el teléfono a la computadora, luego abra la aplicación web en el teléfono y Safari en la computadora, luego puede abrir el inspector web en Safari desde el menú "Desarrollar> Nombre del teléfono> título de la aplicación" (si no puede ver el menú de desarrollo, puede activarlo en las preferencias de Safari).

Desde allí puede ver/editar las cookies y el almacenamiento local al igual que los sitios en su computadora y presionar el comando + r mientras el inspector está centrado volverá a cargar la aplicación en el teléfono.

+1

¡Esta es la respuesta! Tenía una página que estaba desarrollando en caché tan difícil que no pude obtener el manifiesto de caché. –

9

No puedo verificar la caché se borra correctamente, pero esto funcionó para mí:

Con el fin de hacer esto, es necesario para permitir inspector web en el dispositivo iOS. Vaya a Configuración> Safari> Avanzado> Web Inspector (tiene que estar activo) Y debe activar el menú del desarrollador en el Safari de su computadora. Ir a Preferencias> Avanzado> Activar menú de desarrollador

  1. Conecta el dispositivo al ordenador con el cable USB
  2. vaya a Safari> Developpement> Nombre del dispositivo> Inspeccionar una App (La aplicación tiene que estar en ejecución)
  3. Esto abrirá el inspector en el equipo para la aplicación web
  4. Mientras que el inspector está abierto Borrar la caché (comando + Alt + E)
  5. Con el inspector todavía refresco abierta la página en su ordenador (comando + R)

De alguna manera, el caché Webapp se borró y obtuve el código que no está en caché.

2

Pruebe añadiendo una etiqueta única GET a los extremos de todas y cada una href atributos, por ejemplo:

<link rel="stylesheet" type="text/css" href="/css/global.css? 
    <?php echo(mt_rand(10000000, 99999999)); ?> 
" /> 

Esto generaría href="/css/global.css?########", con un número diferente casi cada vez. Esto obliga al Safari de iOS a tirar de la página "nueva", ya que no hay datos en su caché que se originen en el mismo URI, y probablemente nunca lo habrá (a menos que planee recargar la aplicación millones de veces durante el desarrollo: D)

+0

Desafortunadamente, el contenido HTML de la página aún se almacenará en caché –

+1

@FranciscoH. Si bien esto es cierto, también puede aplicar este concepto a cualquier página del sitio, anidando la etiqueta PHP dentro de hrefs, marcos, encabezados, etc. Desafortunadamente, no he encontrado la manera de usar este método para forzar un nuevo versión de la página de índice que se desplegará. – SnazzyJava

+0

Intenté todo y esta es la única solución que funcionó. ¡Gracias! –

6

Encontré una solución alternativa. Sólo hay que poner un enlace en la página web en sí para los usuarios que están teniendo problemas para ver una nueva versión ...

<a href="javascript:top.frames.location.reload();">refresh</a> 

Funciona igual que el botón de actualización iPhone/iPad en la barra de direcciones!

+0

NO entiendo por qué está esto downvoted ... esto funciona sin problemas – Tom

+1

¡Intenté casi TODO y esto finalmente funcionó! Si bien otras respuestas pueden ser productivas para los desarrolladores y no está del todo claro para mí a quién estaba tratando de resolver el OP cuando hizo su pregunta (desarrollador o usuario), apostaría fuertemente a que los usuarios ciertamente NO se van a conectar con inspector web para borrar su caché ... por lo que para la audiencia del usuario esto funciona perfectamente. Gracias por esta respuesta! – HumbleBeginnings

+0

También puede pasar 'true' para volver a cargarlo y provocar una actualización forzosa en algunos navegadores (no pude encontrar una lista definitiva pero Safari figuraba en alguno de ellos). – toxaq

3

Puede connect your device and open Safari's web inspector en su computadora y ejecutar document.location.reload() en la pestaña de la consola para volver a cargar la página.

Antes de recarga puede pulsar Opción +Comando +E para asegurarse de que la memoria caché se borra.

En lugar de arriba también puede pulsar Shift +Comando +R para recargar la página sin caché pero a veces no ha funcionado para mí.

0

Esto me volvió loco durante un tiempo. Intenté borrar el caché en el dispositivo, sin suerte. El cambio de nombre de la página sí ayudó, pero una vez que le cambias el nombre, todavía obtienes la misma versión obsoleta. Encontré la solución ayer. Debe conectar su dispositivo a Mac y abrir Web Inspector en el menú Safari Develop. Una vez en Web Inspector, simplemente presione el botón "Recargar página" en la barra de herramientas del Inspector y - voila - verá la versión nueva en la pantalla de su dispositivo.

Cuestiones relacionadas