簡體   English   中英

jQuery XmlHttpRequest忽略Cache-Control

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM