2013-03-14 87 views
5

HTTP響應與Cache-Control: no-cache vs Cache-Control: max-age=0, must-revalidate, proxy-revalidate有什麼區別?「no-cache」vs「max-age = 0,必須重新驗證,代理重新驗證」

瀏覽器是否認爲完全相同

+1

語義上;不多。儘管如此,它更短。 – 2013-04-20 07:08:43

+1

@MarkNottingham。這是否也支持*現實世界?瀏覽器真的把它們當作*相同*嗎? – Pacerier 2013-04-20 10:29:37

+0

我有一段時間沒有測試過,但我相信如此。 – 2013-04-22 01:21:20

回答

2

一般來說,不同瀏覽器的行爲並不完全相同。 HTTP緩存標頭。我記得一個很小的差異(找不到源代碼,所以我不是100%,這是確切的行爲描述),Chrome(afair)將max-age=0當作max-age=10(假設行爲差異爲max-age=0)足夠小,但性能影響仍然有意義)。

在任何情況下,這裏有瀏覽器之間的HTTP緩存行爲差異的一些其它例子:

  • 有些人會優先選擇HTTP 1.0 Cache頭(Pragma),其他人將優先選擇HTTP 1.1緩存頭
  • 某些瀏覽器(FF +?)以加密緩存
  • don't honorno-store指令和存儲數據的一些瀏覽器會忽略no-cache指令public後規定,有的則沒有。
  • IE ignoresmax-agevary存在時。

我的整體建議是使用這兩種Cache-Control: no-cache, must-revalidate, proxy-revalidatepragma: no-cache(HTTP 1.0)和Expires: 0,以確保所有的瀏覽器不緩存這些標題的內容。

+0

你是如何得到Chrome處理'max -age = 0'好像我們指定'max-age = 10'? – Pacerier 2014-08-15 17:31:29

+0

我記得這個,但是我找不到源代碼。我會通過預訂更新答案,直到找到合適的來源。無論如何:我可以帶來更多不同於瀏覽器的示例。 HTTP緩存標頭。 – 2014-08-15 18:01:43

相關問題