Ant*_*ony 6 ajax asynchronous server-side server-push
我注意到我的一些重量级的网站(我访问的网站,而不是我建的网站)都有一些自动刷新功能.例如,在GMail中,如果我收到新消息,我会看到没有页面重新加载的新消息.基于Facebook浏览器的IM客户端也是如此.据我所知,没有任何java applet处理服务器 - 浏览器绑定,所以我只能假设它是由AJAX完成的,也许是一些我不知道的元素.所以我最好的猜测是,它采用以下两种方式之一:
javascript对服务器端脚本进行稳定的"ping",检查可能可用的任何更新(这可以解释为什么这些页面中的某些页面会抓取任何其他重载页面).要么
javascript无所事事,服务器端脚本实际上"推送"浏览器的任何更新.但我不确定这是否可行.我想有些类型的AJAX函数还在ping,但它只是简单地问"任何更新?" 并且服务器脚本有一个简单的布尔值,表示"nope"或"我很高兴你问." 但是如果是这种情况,任何数据更改都需要直接调用脚本,以便它准备好数据更改并对该布尔函数进行更改.
那可能/可行/它是如何工作的?我想象的是:
有人向服务器发送电子邮件/ IM/DB更新,服务器使用脚本的URL和一些相关的GET变量调用脚本,脚本记录更改并更新"可用更新"变量,AJAX获得响应事实上,AJAX运行其正常的"更新页面"功能,执行正常的更新脚本并将它们输出到浏览器.
我问,因为js只是做一个持续检查似乎非常低效,这需要a)服务器每1.5秒做一次工作,b)我的浏览器每1.5秒做一次工作,这样我就可以说"哦,小伙子,我有一个IM!就像一个真正的IM客户端!"