2011-11-04 169 views
0

我正在爲PHP緩存控制頭寫一個小包裝。在我承諾實施特定實施之前,我想直接瞭解一些細節。緩存控制頭

我知道所有的指令和他們做什麼,但似乎他們中的一些可能會發生衝突。我假設,如果存在no-cache,則不應該存在其他Cache-Control指令(並且而不是集合Pragma: no-cache,因爲它實際上是請求標頭)。

是否存在s-maxage意味着publicprivate指令應刪除public以及s-maxage。有沒有這樣設置no-store,no-transform,must-revalidateproxy-revalidate的注意事項?還有其他指令是否相互衝突?

而且會no-cache和團伙衝突與任何非緩存控制指令,如Expires等?

回答

1

根據我的經驗,即使從理論上講所有緩存標頭和指令都是正確的,瀏覽器和代理服務器是否按照他們的要求來做是另一回事。我認爲沒有辦法繞過測試(這很痛苦)。特別是有這麼多的平板電腦和移動設備。 http://www.procata.com/cachetest/可能會有所幫助。我不知道可靠的緩存測試框架。

然後在HTTP 1.0和HTTP 1.1指令之間存在一定的混淆。通常,向後兼容性存在(但也應該測試)。我會考慮完全忽略HTTP 1.0指令(它們是:Pragma:No-cacheExpires),並專注於HTTP 1.1。

緩存指令的層次結構在http://palisade.plynt.com/issues/2008Jul/cache-control-attributes/中進行了說明。你的一些問題在那裏得到解答。