使用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更清晰。