[英]jQuery XmlHttpRequest Cache-Control being ignored
我正在使用谷歌瀏覽器,我注意到每次執行XHR請求時,我都會在請求中添加以下標頭:
Cache-Control: no-cache
Pragma: no-cache
如果您閱讀http://www.w3.org/TR/XMLHttpRequest/上的規范,則說明以下內容
如果用戶代理實現HTTP緩存,則它應該尊重作者請求頭中的Cache-Control頭(例如,Cache-Control:no-cache繞過緩存)。 除非最終用戶明確請求此類行為(例如,通過重新加載頁面),否則它不能自動發送Cache-Control或Pragma請求標頭。
好吧,我正在嘗試以下方法:
$.ajax(myUrl, {
type: 'get',
dataType: 'json'
cache: true,
headers: {
'Cache-Control': 'max-age=200'
}
})
正如您所看到的,我明確地設置了Cache-Control標頭,希望獲得我的資源的緩存副本。 好吧Chrome似乎忽略了Cache-Control標頭。
在發出XHR請求時是否可以不發送Cache-Control: no-cache
標頭?
這是一個愚蠢的錯誤。 我將Developer Tools設置為“Disable Cache”。 這就是它總是添加緩存控制頭的原因。 如果發生這種情況,請確保確保未選中此框。
勞爾
我只是測試它,你的代碼工作正常,除了缺少逗號。
打開網絡選項卡,然后在此頁面的控制台中嘗試此操作:
$.ajax('http://stackoverflow.com/', {
type: 'get',
dataType: 'json',
cache: true,
headers: {
'Cache-Control': 'max-age=123'
}
})
再次檢查網絡選項卡,單擊剛剛創建的請求,然后單擊“標題”選項卡。 您將看到請求是使用您提供的Cache-Control
標頭發送的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.