簡體   English   中英

如何在ajax請求中控制緩存控制

[英]How to control cache-control in ajax request

這可能是一個愚蠢的問題,但我搜索了很多沒有任何結果。 我知道如何在服務器響應中設置緩存控制,但如何更改 ajax 請求中的緩存控制值? 注意:我希望瀏覽器使用它的緩存。 我不希望它從服務器獲取更新的 json ......這就是我想要做的全部事情。

在此處輸入圖片說明

您可以使用headers屬性,如下所示:

$.ajax({
...
headers: {
     'Cache-Control': 'max-age=1000' 
}
...
});

請記住, cache屬性與Cache-Control標頭沒有任何共同之處,它只是一個緩存破壞者(將?_={timestamp}附加到 GET 參數)並且僅適用於GETHEAD請求。

無論如何,一些有用的東西: 如何設置 HTTP 標頭(用於緩存控制)?

真正的答案是,當您在 Network 面板中看到Cache-Control: max-age=0 ,這很可能是瀏覽器為避免緩存所做的事情。 默認情況下,這不是 jQuery 正在做的事情 所以改變標題沒有意義。 所以你可以簡單地使用$.getJSON()並且 HTTP 緩存將工作......

所以只需關閉 devtools 中的禁用緩存功能,你應該沒問題(正如在 kav 的評論中已經指出的那樣)。

但還有另一個問題。 緩存控制標頭僅適用於普通 200 請求(成功)。 大多數錯誤不會在 Firefox 中緩存。 無論您的服務器說什么,Firefox 都會忽略響應中的 Cache-control 標頭。 所以無論你做什么 Firefox 都不會緩存 404 或 400 請求。 您可以使用 410 (Gone) 而不是 404。但這也需要在服務器端完成,而不是在 AJAX 請求中(因此在響應標頭中,而不是在請求標頭中)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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