研究gmail快速响应原理——猜想

今天看见同事在那搞一个httpfox的(firefox)插件,刚巧跟boss讨论了一些问题,他提到gmail的快速响应,他的意思是说当你使用gmail邮箱时,有新邮件到达时,它能够立即就在页面上显示出来。

于是我使用httpfox观察了gmail的请求行为,发现它每隔1分钟就请求服务器一次,如下图:

研究gmail快速响应原理——猜想_第1张图片

我在一次定时请求的开始时给该gmail发送了一封邮件,继续观察了gmail的行为,如下图:

可以看出,只隔了3秒就收到了我发送的邮件,这3秒还包括我发送邮件操作的时间(邮件事先写好了,只要按一个发送按钮)。

这就是我好奇的地方,为何能如此之迅速。搞web开发的都明白http协议,服务器是不会记录浏览器状态的,也不会主动请求浏览器。

我的猜测是gmail每个一分钟请求一次服务器目的是维持浏览器在服务器端的状态(即在线状态),而在服务器端可能有个端口在监听浏览器的请求,如果隔了一分钟没有收到浏览器的请求则在服务器端将浏览器的状态设为离线状态。在这样的前提下,如果服务器端记录的浏览器的状态为在线的话,那么当有新邮件到达时就会通过ajax即时反应到浏览器中,如果为离线状态则将新邮件保持在服务器中,等到用户下次登录gmail的时候再在其浏览器中体现出来。

PS:这只是我的猜测,不知道和事实是否有那么几分相似。

你可能感兴趣的:(Ajax,浏览器,Gmail,firefox,Comet)