HTTPcaching标题:应该如何重新validation工作?

使用trac ,我收到了以下头文件的回应:

Cache-control: must-revalidate 

此外,没有“过期”标题正在发送。 然而,我们的本地代理正在caching这些响应,所以当编辑时,页面需要被“刷新”来更新。 代理人是否行为不端? 其他可能相关的头文件:

 Connection Keep-Alive Proxy-Connection Keep-Alive Keep-Alive timeout=15, max=100 

HTTP允许caching响应,即使它们没有明确的Expires或Cache-Control标头。

具体来说,他们被允许计算自己所谓的启发式新鲜度,以响应某些HTTP状态代码(包括200 OK )。 通常,这是基于Last-Modified头的值; 例如,如果LM是1天前首次存储响应时,则高速caching可能认为假定它是新鲜的2小时是安全的。

must-revalidate是一条指令,告诉caching一旦某个东西变旧,就必须在原始服务器上进行检查。 如果不存在,高速caching可以(通常)在exception情况下使用陈旧的响应(例如,如果它们与源服务器失去联系)。

所以,不,这个caching看起来不像是行为不端,尽pipe听起来好像在计算启发式新鲜度时可能会有点过激。 如果您不希望caching存储响应,请尝试Cache-Control: no-store ,或者(最好)只是设置明确的max-age来控制它被认为是新鲜的时间。

您可能有兴趣查看IETF HTTPbis工作组当前包含caching的文档:

http://tools.ietf.org/html/draft-ietf-httpbis-p6-cache

希望这比RFC2616更清晰。

此外, http://redbot.org/将检查URL并解释caching如何处理特定的响应指令。