Heim  >  Artikel  >  Web-Frontend  >  Warum speichert Safari unter iOS 6 $.ajax-POST-Anfragen auch mit Cache=false im Cache?

Warum speichert Safari unter iOS 6 $.ajax-POST-Anfragen auch mit Cache=false im Cache?

Linda Hamilton
Linda HamiltonOriginal
2024-11-03 22:50:031004Durchsuche

Why Does Safari on iOS 6 Cache $.ajax POST Requests Even with cache=false?

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

  • Keine Cache-Control- oder Expires-Header: Caching findet statt.
  • Cache-Control max -age=0 und ein sofortiger Ablauf: Caching findet statt.
  • Cache-Kontrolle: no-cache: Caching findet NICHT statt.

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!

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
Vorheriger Artikel:Fünf coole JavaScript-TricksNächster Artikel:Fünf coole JavaScript-Tricks