基于Firefox max-age的缓存过期行为很奇怪

时间:2011-10-14 08:48:11

标签: http firefox caching browser cache-control

我正在开发一个服务于大量地图图块的虚拟地球网页应用程序,我正在尝试调整我的服务器发送的http标头,以指示浏览器(Firefox)缓存这些图块的过期时间。我这样做的方式是通过Cache-Control标头和max-age参数。

经过几次测试后,我意识到缓存不适用于低于1799秒(约30分钟)的值。用firebug net panel做一些调试,我发现客户端和服务器时钟之间有30分钟的去同步。例如,如果服务器发送此标头指示3600秒到期时间:

Date            Fri, 14 Oct 2011 07:46:12 GMT
Server          Apache/2.2.13 (Fedora)
X-Powered-By    PHP/5.2.11
Connection      close
Cache-Control   max-age=3600
Content-Length  47864
Content-Type    image/jpeg

我浏览此请求的缓存内容,我明白了。

Last Modified   Fri Oct 14 2011 09:16:16 GMT+0100 (Hora de verano GMT)
Last Fetched    Fri Oct 14 2011 09:16:16 GMT+0100 (Hora de verano GMT)
Expires         Fri Oct 14 2011 09:46:11 GMT+0100 (Hora de verano GMT)

请注意,客户端时间为GMT + 1,服务器为GMT,因此实际偏差约为30分钟。

因此,我得出的结论是Firefox正在计算服务器日期标题的到期时间而不是客户端的响应到达日期,这是正确的吗?如果是这样,这是一个大问题,因为如果我设置了1小时的到期时间,中国的用户永远不会开机,我怎么能解决这个问题呢?提前谢谢。

1 个答案:

答案 0 :(得分:0)

max-age表示每个规范响应的Date标头的年龄。所以,是的,如果有时钟偏差,那么用户感知的挂钟时间将会关闭。但这不应该影响到中国的用户,除非他们的时钟关闭,因为所有涉及的日期都会在比较前转换为规范的时区,当然......

我想知道你在哪里发现了一台没有运行ntp的服务器!