AJAX轮询频率 - 长期民意调查还是不长期民意调查?

Der*_*rek 14 php ajax performance comet long-polling

我正在构建一个需要相对不变的数据库轮询的网页组件.我可以看到两种不同的方法,我想知道其中一种是否比其他方法更好,或者我是否缺少第三种选择.

1)每隔1或2秒发送一次AJAX请求以检查更新.无论是否有新数据,每个请求都会立即返回.
2)触发单个AJAX请求,该请求在收到数据或发生超时之前不会返回.在其中任何一个发生时,它会触发下一个请求.(我认为这叫做长轮询?)

数据库查询的数量与之相同,但使用#2,从浏览器发出的请求将减少,这可以节省带宽和客户端资源.对于服务器,最好让一个PHP请求保持活动状态并在查询之间休眠,或者每隔几秒触发一次,轮询数据库,然后关闭?或者没有区别,我对此太过强调了?

编辑:我想我还应该声明这是一个更大的网络应用程序的聊天小部件.通信的轻微延迟不会杀死用户,因为聊天是次要功能.

Wil*_*ill 8

长轮询将比轮询更好地扩展(即减少服务器负载),同时提供更好的响应时间.

如果您的收件人进行了轮询,则邮件的平均旅程时间将是轮询间隔的一半.

随着长轮询,它的瞬间 - 服务器只在没有什么可说的时候等待.

如果您正在进行聊天消息,请进行长时间轮询; 它是一个可用性的东西.

长轮询的下端是实施起来更复杂; 但它并没有那么复杂,而且它得到了广泛的实施.因此,如果您不能为您选择的网络服务器使用现成的框架,您可以开始合理地编写一个框架,然后您就可以使用它了.