Heim  >  Artikel  >  Web-Frontend  >  Warum speichert iOS 6 Safari meine $.ajax-Aufrufe auch mit „No-Cache“-Headern im Cache?

Warum speichert iOS 6 Safari meine $.ajax-Aufrufe auch mit „No-Cache“-Headern im Cache?

Susan Sarandon
Susan SarandonOriginal
2024-11-05 04:18:02522Durchsuche

Why Does iOS 6 Safari Cache My $.ajax Calls Even With `no-cache` Headers?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn