Desde la actualización a iOS 6, estamos viendo que la vista web de Safari se toma la libertad de almacenar en caché las $.ajaxllamadas. Esto está en el contexto de una aplicación PhoneGap, por lo que está utilizando Safari WebView. Nuestras $.ajaxllamadas son POSTmétodos y tenemos el caché establecido en falso {cache:false}, pero aún así esto está sucediendo. Intentamos agregar manualmente TimeStampa los encabezados pero no sirvió de nada.
Investigamos más y descubrimos que Safari solo está devolviendo resultados en caché para servicios web que tienen una firma de función que es estática y no cambia de llamada a llamada. Por ejemplo, imagine una función llamada algo como:
getNewRecordID(intRecordType)
Esta función recibe los mismos parámetros de entrada una y otra vez, pero los datos que devuelve deben ser diferentes cada vez.
Debe estar apurado por Apple para hacer que iOS 6 se deslice de manera impresionante, se alegraron demasiado con la configuración de caché. ¿Alguien más ha visto este comportamiento en iOS 6? Si es así, ¿qué lo está causando exactamente?
La solución que encontramos fue modificar la firma de la función para que sea así:
getNewRecordID(intRecordType, strTimestamp)
y luego siempre pasa un TimeStampparámetro también, y simplemente descarta ese valor en el lado del servidor. Esto funciona alrededor del problema. ¡Espero que esto ayude a otra pobre alma que pasa 15 horas en este tema como lo hice yo!