Heim > Artikel > Web-Frontend > Warum speichert Safari unter iOS 6 $.ajax-POST-Anfragen auch mit Cache=false im Cache?
Safari-Caching $.ajax-Ergebnisse unter iOS 6: Eine Analyse
Seit der Veröffentlichung von iOS 6 gibt es Bedenken hinsichtlich des Webansicht-Caching $ von Safari .ajax-Aufrufe. Obwohl das Cache-Attribut explizit auf „false“ gesetzt ist, bleiben unerwartete Caching-Verhalten bestehen, insbesondere bei POST-Methoden mit statischen Funktionssignaturen, die durchweg dieselben Eingabeparameter empfangen.
Ursache
Untersuchungen haben ergeben, dass Safari unter iOS 6 POST-Anfragen zwischenspeichert, denen Cache-Control-Header fehlen oder die „Cache-Control: max-age=0“ enthalten. Dies unterscheidet sich von anderen Browsern, die die Nicht-Cache-Fähigkeit von POST-Antworten respektieren.
Problemumgehung
Um das Caching global zu verhindern, besteht die einzig wirksame Lösung darin, „Cache-Control“ festzulegen : kein Cache.“ Dieser Header verbietet explizit das Caching.
Beispiele
Apache-Konfiguration
Um diese Problemumgehung in Apache zu implementieren, fügen Sie die folgende Zeile zu Ihrer Konfigurationsdatei hinzu:
Header set Cache-Control "no-cache"
Alternativ können Sie dieses Verhalten nur auf POST-Anfragen beschränken:
SetEnvIf Request_Method "POST" IS_POST Header set Cache-Control "no-cache" env=IS_POST
Zusätzliche Hinweise
Es ist zu beachten, dass das Caching nur erfolgt, wenn die POST-Anfrageparameter und die URL unverändert bleiben. Durch das Einfügen zufälliger Daten in die URL- oder POST-Nutzlast kann das Caching-Problem umgangen werden.
Das obige ist der detaillierte Inhalt vonWarum speichert Safari unter iOS 6 $.ajax-POST-Anfragen auch mit Cache=false im Cache?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!