缓存控制标头

时间:2011-11-04 02:21:28

标签: php http cache-control

我正在用PHP编写一个用于Cache-Control标头的小包装器。在我致力于特定实现之前,我想直接了解一些细节。

我知道所有的指令和它们的作用,但似乎其中一些可能会发生冲突。我假设如果存在no-cache,则不应存在其他Cache-Control指令(并且设置Pragma: no-cache,因为它实际上是请求标头)。

s-maxage的存在是否意味着publicprivate指令应删除public以及s-maxage。以这种方式设置no-storeno-transformmust-revalidateproxy-revalidate是否有任何警告?还有其他指令相互冲突吗?

并且no-cache和该团伙会与任何非缓存控制指令冲突,例如Expires等?

2 个答案:

答案 0 :(得分:1)

根据我的经验,即使你在理论上得到所有缓存头和指令,浏览器和代理是否按照它们被告知是另一回事。我不认为有一种方法可以测试(这很痛苦)。特别是有这么多的平板电脑和移动设备。 http://www.procata.com/cachetest/可能会有所帮助。我不知道可靠的缓存测试框架。

然后在HTTP 1.0和HTTP 1.1指令之间存在某种混淆。通常,存在向后兼容性(但也应该进行测试)。我会考虑完全忽略HTTP 1.0指令( Pragma:No-cache Expires )并专注于HTTP 1.1。

http://palisade.plynt.com/issues/2008Jul/cache-control-attributes/中解释了缓存指令的层次结构。你的一些问题在那里得到解答。

答案 1 :(得分:0)

我建议看看

http://greenbytes.de/tech/webdav/draft-ietf-httpbis-p6-cache-17.html

如果没有回答,则将反馈发送给HTTPbis工作组。