我正在开发一个服务于大量地图图块的虚拟地球网页应用程序,我正在尝试调整我的服务器发送的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小时的到期时间,中国的用户永远不会开机,我怎么能解决这个问题呢?提前谢谢。
答案 0 :(得分:0)
max-age表示每个规范响应的Date标头的年龄。所以,是的,如果有时钟偏差,那么用户感知的挂钟时间将会关闭。但这不应该影响到中国的用户,除非他们的时钟关闭,因为所有涉及的日期都会在比较前转换为规范的时区,当然......
我想知道你在哪里发现了一台没有运行ntp的服务器!