2012-09-28 9 views
9

iOS6 ajax El almacenamiento en caché de solicitudes POST se está convirtiendo en un gran problema para nuestra aplicación web. La mayoría de nuestros usuarios han agregado la aplicación a la pantalla de inicio. Desde la actualización, la mayoría de las solicitudes POST al back-end no funcionan y los datos están obsoletos desde hace más de 6 días y siguen contando. Somos conscientes de dos soluciones para resolver esto, una es cambiar cada solicitud POST para que sea diferente agregando una marca de tiempo o alguna entrada aleatoria a la misma, y ​​la segunda es desactivar el almacenamiento en caché en el servidor web.iOS6 - ¿Hay alguna manera de borrar las solicitudes POST ajax almacenadas en caché para agregar aplicaciones web a la pantalla de inicio?

Ambas soluciones se detallan en el siguiente mensaje: Is Safari on iOS 6 caching $.ajax results?

Apagar el almacenamiento en caché en el servidor web podría haber resuelto el problema de si se ha establecido antes de la actualización iOS 6 (o inmediatamente después). Sin embargo, parece que todas las solicitudes POST que se realizaron desde la actualización y hasta el momento en que desactivamos el almacenamiento en caché de las aplicaciones agregadas a la pantalla de inicio, ¡aún están almacenadas en caché! y no podemos encontrar una manera de limpiarlos. ¡quitar la aplicación de la pantalla de inicio y reiniciar el dispositivo no funciona! La única opción que tenemos es cambiar nuestra URL o agregar una marca de tiempo a cada solicitud, además de desactivar el almacenamiento en caché en el servidor web.

¿Alguien sabe de una manera de limpiar una caché de la aplicación de la pantalla de inicio, además de restaurar a la fábrica? por favor proporcione detalles.

Advertencia para cualquier persona que implementó una solución agregando una marca de tiempo a sus solicitudes sin desactivar el almacenamiento en caché en el servidor. Si su aplicación se agrega a la pantalla de inicio, CADA respuesta de la publicación se almacenará en caché y no parece que caduque. ¡A menos que alguien tenga una manera de borrarlo, esto parece una posible fuga de memoria!

+1

El almacenamiento en caché iOS6 es claramente contrario a las especificaciones HTTP (ver http://www.mnot.net/blog/2012/09/24/caching_POST). No espere que esté allí en 6.01 – Alnitak

+2

De hecho, es contrario a las especificaciones, pero espero que todavía esté allí en 6.01 ya que Apple no ha reconocido el error y probablemente asuma que la gente lo arreglará por sí mismo y que pueden mantener en su agradable "mejora del rendimiento". Grr. – Kieran

Respuesta

1

La única manera de superar este problema de memoria caché en mi experiencia consiste en seguir el enfoque de Google y agregar un ID por solicitud en la url. A continuación, puede usar mod_rewrite u otro motor de este tipo para que su servidor lo haga transparente para sus scripts de back-end.

+1

De acuerdo. Agregue un ID por solicitud (guárdelo en la sesión) que expira después de que se reciban los datos de la publicación. Opcionalmente, podría agregar esto como un elemento de formulario oculto en lugar de un parámetro de URL, pero de cualquier forma funcionaría. –

Cuestiones relacionadas