Caching-Rätsel: Safaris selektiver Abruf in iOS 6
Seit der Veröffentlichung von iOS 6 sind Entwickler auf ein unerwartetes Verhalten in der Webansicht von Safari gestoßen: $ .ajax-POST-Aufrufe werden trotz der Cache:false-Einstellungen hartnäckig zwischengespeichert. Interessanterweise manifestiert sich diese Anomalie nur, wenn die aufgerufene Funktion eine statische Signatur verwendet.
Vorläufige Untersuchungen ergaben, dass Safari POST-Antworten nur dann zwischenspeichert, wenn ihnen Cache-Control- oder Expires-Header fehlen oder wenn Cache-Control auf max-age eingestellt ist =0. Durch die Gewährung der Anforderung „Cache-Control: no-cache“ wird dieses Verhalten jedoch umgangen und das Caching insgesamt verhindert.
Apples Entscheidung, diese HTTP-Spezifikationsbestimmung für POST-Methoden zu nutzen (Abschnitt 9.5), hat die Entwickler verwirrt. Während das Zwischenspeichern von POST-Antworten keine Seltenheit ist, scheint die Entscheidung von Safari, dies ohne Header oder mit max-age=0 zu tun, eine Abweichung vom herkömmlichen Browserverhalten zu sein.
Um dieses Caching-Dilemma zu lösen, gibt es eine globale Lösung Eine Apache-Konfiguration sieht wie folgt aus:
Header set Cache-Control "no-cache"
Wenn jedoch die selektive Anwendung der „no-cache“-Direktive nur auf POST-Anfragen bevorzugt wird, bietet Apache eine Lösung:
SetEnvIf Request_Method "POST" IS_POST Header set Cache-Control "no-cache" env=IS_POST
Alternativ kann das Hinzufügen eines eindeutigen Parameters zu den URL- oder POST-Daten das Caching-Problem für statische Funktionssignaturen umgehen.
Das obige ist der detaillierte Inhalt vonWarum speichert Safari POST-Anfragen in iOS 6 trotz „cache:false' zwischen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!