[英]Cache-Control Headers
我正在用PHP为Cache-Control标头编写一个小型包装器。 在提交特定实现之前,我想直接获得一些细节。
我知道所有指令及其作用,但似乎其中一些可能会发生冲突。 我假设如果no-cache
存在no-cache
,则不应存在其他任何Cache-Control指令(并且也不要设置Pragma: no-cache
,因为它实际上是请求标头)。
s-maxage
的存在是否意味着public
? private
指令应该删除public
以及s-maxage
。 是否有以这种方式设置no-store
, no-transform
, must-revalidate
或proxy-revalidate
警告? 是否还有其他相互冲突的指令?
并且no-cache
和帮派会与任何非缓存控制指令(例如Expires
等)发生冲突吗?
根据我的经验,即使您理论上正确地获得了所有缓存标头和指令,浏览器和代理是否按照其指示执行也是另一回事。 我认为测试没有办法(这很痛苦)。 特别是周围有许多平板电脑和移动设备。 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/中进行了说明。 您的一些问题在那里得到回答。
我建议看
http://greenbytes.de/tech/webdav/draft-ietf-httpbis-p6-cache-17.html
并且,如果不能解决问题,则将反馈发送到HTTPbis工作组。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.