我正在构建一个需要相对恒定的数据库轮询的网页组件。我可以看到两种不同的方法,我想知道其中一种是否比其他更好,或者我是否缺少第三种选择。
1) 每 1 或 2 秒发送一次 AJAX 请求以检查更新。每次请求无论是否有新数据都会立即返回。
2) 触发单个 AJAX 请求,该请求在收到数据或发生超时之前不会返回。当其中任何一个发生时,它都会触发下一个请求。 (我想这就是所谓的长轮询?)
数据库查询的数量与两者相同,但使用#2 时,浏览器发出的请求会更少,这可以节省带宽和客户端资源。对于服务器来说,让一个 PHP 请求保持活动状态并在查询之间休眠,还是每隔几秒启动一次,轮询数据库,然后关闭,哪个更好?还是说没有什么区别,只是我太强调这一点了?
编辑:我想我还应该声明这是一个更大的网络应用程序的聊天小部件。通信中的轻微延迟不会杀死用户,因为聊天是次要功能。
长轮询比轮询具有更好的扩展性(即更少的服务器负载),同时提供更好的响应时间。
如果您的收件人进行轮询,则消息的平均传输时间将是轮询间隔的一半。
通过长轮询,它是即时的 - 服务器仅在无话可说时等待。
如果您要进行聊天消息传递,请进行长轮询;这是一个可用性问题。
长轮询的缺点是实现起来比较复杂。但它并没有那么复杂,并且被广泛实施。因此,如果您无法为您选择的网络服务器使用现成的框架,您可以开始合理地编写一个框架,然后您就会让它工作。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)