Seit dem Upgrade auf iOS 6 können wir in der Webansicht von Safari $.ajax
Anrufe zwischenspeichern. Dies erfolgt im Kontext einer PhoneGap-Anwendung, sodass Safari WebView verwendet wird. Unsere $.ajax
Aufrufe sind POST
Methoden und wir haben den Cache auf false gesetzt {cache:false}
, aber dies geschieht immer noch. Wir haben versucht TimeStamp
, den Headern manuell ein hinzuzufügen , aber es hat nicht geholfen.
Wir haben weitere Nachforschungen angestellt und festgestellt, dass Safari nur zwischengespeicherte Ergebnisse für Webdienste zurückgibt, deren Funktionssignatur statisch ist und sich nicht von Aufruf zu Aufruf ändert. Stellen Sie sich zum Beispiel eine Funktion vor, die so etwas heißt:
getNewRecordID(intRecordType)
Diese Funktion empfängt immer wieder dieselben Eingabeparameter, aber die zurückgegebenen Daten sollten jedes Mal anders sein.
Muss in Apples Eile sein, um iOS 6 eindrucksvoll mitzumachen. Sie waren zu zufrieden mit den Cache-Einstellungen. Hat jemand anderes dieses Verhalten unter iOS 6 gesehen? Wenn ja, was genau verursacht es?
Die Problemumgehung bestand darin, die Funktionssignatur so zu ändern:
getNewRecordID(intRecordType, strTimestamp)
und übergeben Sie dann immer auch einen TimeStamp
Parameter und verwerfen Sie diesen Wert einfach auf der Serverseite. Dies umgeht das Problem. Ich hoffe, das hilft einer anderen armen Seele, die wie ich 15 Stunden mit diesem Thema verbringt!