Seit dem Upgrade auf iOS 6 können wir in der Webansicht von Safari $.ajaxAnrufe zwischenspeichern. Dies erfolgt im Kontext einer PhoneGap-Anwendung, sodass Safari WebView verwendet wird. Unsere $.ajaxAufrufe sind POSTMethoden 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 TimeStampParameter 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!