0

我最近發現我們在所有WebApi響應中都使用Cache-Control:no-cache。我知道在瀏覽器緩存之前確實存在很大差異,並且你永遠不知道瀏覽器是否可以緩存你的json,所以這很重要。現代瀏覽器緩存ajax響應嗎?

據我記得,現在沒有現代瀏覽器緩存Ajax響應,所以這個頭是不需要的。但是我真的很想仔細檢查一下這裏的行爲,因爲在這個話題上找不到最近的帖子。

所以問題是:我們是否仍然需要爲來自SPA應用程序的web api調用設置Cache-Control:no-cache,如果是,那麼哪些瀏覽器執行緩存?

+0

可能重複[不能瀏覽器只是使用它的緩存從以前的ajax調用?](http://stackoverflow.com/questions/1230998/cant-the-browser-just-use-its-cache-from -prior-ajax-calls) –

+1

我不認爲這是重複的,因爲另一個問題實際上是8歲,自從改變了很多以後,這就是爲什麼我在標題中包含「現代」的原因。在發佈之前,我已經閱讀過這篇文章。 –

回答

2

根據HTTP/1.1 specification瀏覽器HTTP緩存鍵是請求HTTP方法和URI的組合。瀏覽器沒有考慮請求是如何發出的:

主緩存密鑰由請求方法和目標 URI組成。但是,由於當前常用的HTTP緩存通常僅限於緩存對GET的響應,因此許多緩存僅會拒絕其他方法,並且僅將URI用作主緩存密鑰。

因此,如果您執行的請求緩存,您仍然需要該標頭值。查詢HTTP Caching MDN pageWhich webbrowsers use http/1.1 by default? question瞭解更多詳情。

此外,您可能還需要爲IE專門添加其他標頭。有關更多信息,請檢查Make IE to cache resources but always revalidate問題。