Heim >Web-Frontend >js-Tutorial >Warum speichert iOS 6 Safari meine $.ajax-Aufrufe auch mit „No-Cache'-Headern im Cache?
iOS 6 Safari: $.ajax-Aufrufe zwischenspeichern
Es wurde beobachtet, dass die Webansicht von Safari in iOS 6 sogar $.ajax-Aufrufe zwischenspeichert wenn ausdrücklich darauf hingewiesen wird, dass dies nicht der Fall sein soll. Dieses eigenartige Verhalten wurde im Zusammenhang mit PhoneGap-Anwendungen festgestellt, die Safari WebView nutzen.
Ursache des Caching-Problems
Untersuchungen haben ergeben, dass Safari POST-Anfragen im Cache speichert Es fehlen Cache-Control-Header oder sie enthalten den Header „Cache-Control: max-age=0“. Dieses Verhalten ergibt sich aus einer Interpretation der HTTP-Spezifikation, die besagt, dass POST-Antworten mit entsprechenden Headern zwischengespeichert werden können.
Lösungen
Um das Zwischenspeichern zu verhindern, ist die Cache-Kontrolle Der Header sollte auf „no-cache“ gesetzt sein. Dies kann global in Apache-Konfigurationen erreicht werden mit:
Header set Cache-Control "no-cache"
Speziell für POST-Anfragen kann dieselbe Einstellung angewendet werden mit:
SetEnvIf Request_Method "POST" IS_POST Header set Cache-Control "no-cache" env=IS_POST
Alternativ gibt es eine Problemumgehung Funktionssignaturen ändern:
getNewRecordID(intRecordType, strTimestamp)
Durch das Hinzufügen eines Zeitstempelparameters zur Funktionssignatur ändert sich die Anforderung effektiv bei jedem Aufruf und verhindert so eine Zwischenspeicherung.
Das obige ist der detaillierte Inhalt vonWarum speichert iOS 6 Safari meine $.ajax-Aufrufe auch mit „No-Cache'-Headern im Cache?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!