首頁  >  文章  >  web前端  >  為什麼 iOS 6 Safari 即使使用「no-cache」標頭也會快取我的 $.ajax 呼叫?

為什麼 iOS 6 Safari 即使使用「no-cache」標頭也會快取我的 $.ajax 呼叫?

Susan Sarandon
Susan Sarandon原創
2024-11-05 04:18:02523瀏覽

Why Does iOS 6 Safari Cache My $.ajax Calls Even With `no-cache` Headers?

iOS 6 Safari:快取$.ajax 呼叫

iOS 6 中的Safari 網頁視圖已被觀察到快取甚至當明確指定不這樣做時。這種奇怪的行為已經在使用 Safari WebView 的 PhoneGap 應用程式中遇到過。

快取問題的原因

調查顯示Safari 快取了POST 要求,缺少Cache-Control 標頭或包含標頭「Cache-Control: max-age=0 」。此行為源自於對 HTTP 規範的解釋,該規範規定可以使用適當的標頭來快取 POST 回應。

解決方案

為了防止緩存,Cache-Control標頭應設定為「無快取」。這可以在Apache 配置中全域實現,使用:

Header set Cache-Control "no-cache"

對於POST 請求,可以使用以下命令應用相同的設定:

SetEnvIf Request_Method "POST" IS_POST
Header set Cache-Control "no-cache" env=IS_POST

或者,解決方法是修改函數簽章:

getNewRecordID(intRecordType, strTimestamp)

透過向函數簽章新增時間戳參數,請求會隨著每次呼叫而有效更改,從而防止快取。

以上是為什麼 iOS 6 Safari 即使使用「no-cache」標頭也會快取我的 $.ajax 呼叫?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn