AJAX 轮询频率 - 长轮询还是不长轮询?
-
27-09-2019 - |
题
我正在构建一个需要相对恒定的数据库轮询的网页组件。我可以看到两种不同的方法,我想知道其中一种是否比其他更好,或者我是否缺少第三种选择。
1) 每 1 或 2 秒发送一次 AJAX 请求以检查更新。每次请求无论是否有新数据都会立即返回。
2) 触发单个 AJAX 请求,该请求在收到数据或发生超时之前不会返回。当其中任何一个发生时,它都会触发下一个请求。(我想这就是所谓的长轮询?)
数据库查询的数量与两者相同,但使用#2 时,浏览器发出的请求会更少,这可以节省带宽和客户端资源。对于服务器来说,让一个 PHP 请求保持活动状态并在查询之间休眠,还是每隔几秒启动一次,轮询数据库,然后关闭,哪个更好?还是说没有什么区别,只是我太强调这一点了?
编辑:我想我还应该声明这是一个更大的网络应用程序的聊天小部件。通信中的轻微延迟不会杀死用户,因为聊天是次要功能。
解决方案
长轮询会更好(即较少的服务器负载)大于轮询比例的,同时给予更好的响应时间。
如果您的收件人投票,消息的平均行程时间将一半的轮询间隔。
使用长轮询,其瞬间 - 服务器只如果有什么可说的等待
如果你正在做的聊天消息,走长轮询;其可用性的事情。
在向下侧与长轮询是它是比较复杂的实现;但它不是要复杂得多,并且已广泛实施。所以,如果你不能用一个现成的,现成的框架供你选择的Web服务器,您可以设置有关编写一个合理的,你会得到它的工作。
不隶属于 StackOverflow