Desde la actualización a iOS 6, estamos viendo que la vista web de Safari se toma la libertad de almacenar en caché las $.ajax
llamadas. Esto está en el contexto de una aplicación PhoneGap, por lo que está utilizando Safari WebView. Nuestras $.ajax
llamadas son POST
métodos y tenemos el caché establecido en falso {cache:false}
, pero aún así esto está sucediendo. Intentamos agregar manualmente TimeStamp
a 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 TimeStamp
pará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!