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

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

数据库查询的数量与两者相同,但使用#2 时,浏览器发出的请求会更少,这可以节省带宽和客户端资源。对于服务器来说,让一个 PHP 请求保持活动状态并在查询之间休眠,还是每隔几秒启动一次,轮询数据库,然后关闭,哪个更好?还是说没有什么区别,只是我太强调这一点了?

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

有帮助吗?

解决方案

长轮询会更好(即较少的服务器负载)大于轮询比例的,同时给予更好的响应时间。

如果您的收件人投票,消息的平均行程时间将一半的轮询间隔。

使用长轮询,其瞬间 - 服务器只如果有什么可说的等待

如果你正在做的聊天消息,走长轮询;其可用性的事情。

在向下侧与长轮询是它是比较复杂的实现;但它不是要复杂得多,并且已广泛实施。所以,如果你不能用一个现成的,现成的框架供你选择的Web服务器,您可以设置有关编写一个合理的,你会得到它的工作。

其他提示

您还可以看看 网络套接字, ,最新浏览器的一部分(或通过模拟 闪存文件 你放在你的页面上)

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top