iOS 6 中的Safari 快取難題
iOS 6 中Safari 的引入引起了人們對其$.ajax 調用的快取處理的擔憂。具體來說,儘管明確將快取屬性設為 false,但 PhoneGap 應用程式中發出的 POST 請求仍會被快取。
根本原因
經過徹底調查,發現Safari 根據以下條件選擇性地快取POST:
根據 HTTP 規範,POST 回應通常無法快取。然而,iOS 6 上的 Safari 似乎正在利用一項允許使用適當的 Cache-Control 或 Expires 標頭進行快取的規定。
解決方法
防止 Safari 快取 POST要求時,需要在回應標頭中設定「Cache-Control: no-cache」。這可確保 Safari 遵循快取旁路指令。
對於適用於所有POST 的全域解決方案,請將以下程式碼新增至伺服器設定:
<code class="apache">Header set Cache-Control "no-cache"</code>
如果您只想停用快取特定的POST,可以使用以下程式碼:
<code class="apache">SetEnvIf Request_Method "POST" IS_POST Header set Cache-Control "no-cache" env=IS_POST</code>
注意:如果請求參數不變,Safari 仍會快取POST請求。為了避免緩存,請修改每次呼叫的請求參數。或者,您可以將隨機參數附加到請求 URL 或 POST 資料以確保唯一性。
以上是儘管有快取控制設置,為什麼 Safari 仍會在 iOS 6 中快取 POST 請求?的詳細內容。更多資訊請關注PHP中文網其他相關文章!