Heim >Web-Frontend >js-Tutorial >Warum speichert Safari POST-Anfragen in iOS 6 trotz Cache-Kontrolleinstellungen im Cache?
Safari-Cache-Rätsel in iOS 6
Die Einführung von Safari in iOS 6 hat Bedenken hinsichtlich der Cache-Verarbeitung für $.ajax-Aufrufe aufgeworfen. Insbesondere werden POST-Anfragen, die innerhalb einer PhoneGap-Anwendung gestellt werden, zwischengespeichert, obwohl die Cache-Eigenschaft explizit auf „false“ gesetzt ist.
Die Grundursache
Nach gründlicher Untersuchung wurde festgestellt, dass Safari speichert POSTs selektiv basierend auf den folgenden Kriterien zwischen:
Gemäß der HTTP-Spezifikation sind POST-Antworten im Allgemeinen nicht zwischenspeicherbar . Safari unter iOS 6 scheint jedoch eine Bestimmung auszunutzen, die das Caching mit entsprechenden Cache-Control- oder Expires-Headern ermöglicht.
Die Problemumgehung
Um zu verhindern, dass Safari POST zwischenspeichert Bei Anfragen muss in den Antwortheadern „Cache-Control: no-cache“ eingestellt werden. Dadurch wird sichergestellt, dass Safari die Cache-Bypass-Anweisung berücksichtigt.
Für eine globale Lösung, die für alle POSTs gilt, fügen Sie den folgenden Code zur Serverkonfiguration hinzu:
<code class="apache">Header set Cache-Control "no-cache"</code>
Wenn Sie nur deaktivieren möchten Zum Caching für bestimmte POSTs können Sie den folgenden Code verwenden:
<code class="apache">SetEnvIf Request_Method "POST" IS_POST Header set Cache-Control "no-cache" env=IS_POST</code>
Hinweis: Safari speichert weiterhin POST-Anfragen zwischen wenn die Anfrageparameter gleich bleiben. Um Caching zu vermeiden, ändern Sie die Anforderungsparameter bei jedem Aufruf. Alternativ können Sie einen zufälligen Parameter an die Anforderungs-URL oder die POST-Daten anhängen, um die Eindeutigkeit sicherzustellen.
Das obige ist der detaillierte Inhalt vonWarum speichert Safari POST-Anfragen in iOS 6 trotz Cache-Kontrolleinstellungen im Cache?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!