使用HTTP标头`date`计算时间偏移量

时间:2014-04-13 00:47:44

标签: http time http-headers utc

我有一个程序需要每小时完全做一些事情。问题是时间需要相对于远程服务器,它与时间服务器同步,事实上,提前约6秒(!)。我无法更改该服务器。

我所拥有的只是访问Web服务器的HEAD标头,它有一个方便的字段date(这就是我发现差异的方式)。

问题:无论语言是什么(我使用nodeJS,但这不是重点),您将如何计算我的服务器和远程服务器之间的精确偏移量?

我特别担心网络延迟:我有以下变量:

  • 本地服务器时间
  • 发送请求的时间
  • 带有Date标头的响应到达的时间
  • 远程服务器时间

但是,服务器收到请求时会生成远程服务器时间 - 这可能需要1秒钟。并且,响应到达的时间需要考虑接收它所花费的时间 ......

现在我正在抵消(时间请求被发送 - 时间响应到了)/ 2.然而,感觉很蹩脚。

有没有更好的,既定的方法来解决这个问题?

1 个答案:

答案 0 :(得分:0)

嗯,我知道这种问题,虽然我从未有过无法改变其中一个演员的限制。我会说这个近似值(时间请求被发送 - 时间响应到达)/ 2感觉还可以。如果你更关心它,你可以在基准测试中试验近似值。方式:

  • 不要发出一个同步请求但按顺序排列10,然后消除前3个偏移和最后3个偏移并平均剩下的4个
  • 或:
  • 不要发出一个同步请求,但要在10个不同的线程中突破10,这理论上应该消除创建请求所需的客户端(本地端)时间,并且应该阻止(如果它阻塞)服务器端(或您的情况下的远程端)。但是,这将涉及一些数学,我认为这对于价值来说太麻烦了

P.S。数字10是任意的(希望远程服务器不会禁止/阻止您提出太多请求:)