AJAX - 如何确定最佳轮询频率?

时间:2011-01-02 21:03:36

标签: javascript ajax firebug embedding

我正在为内置Web服务器的小型嵌入式设备构建新功能。它有一个基于Web的Javascript AJAX界面。我今天遇到了一个问题,我每隔500毫秒就有一个setInterval调用一个AJAX轮询函数,但是在XHR监控的Firebug中,我会看到“中止”了很多。当嵌入式方面的内容发生变化时,Web UI似乎无法可靠地更新。我在Firebug中也注意到XHR负载将接近500毫秒。我将AJAX轮询频率更改为1000毫秒,这解决了问题。但是如果我的分析是正确的,那么如果嵌入式端开始接近1000ms加载,则问题可能会再次发生。

所以我的问题是,有没有办法确定最佳轮询频率;您希望尽可能频繁地更新UI,但不要让服务器超载(这在我的情况下非常慢且有限)。另外,“中止”在Firebug XHR网络视图中实际意味着什么?

谢谢, 佛瑞德

2 个答案:

答案 0 :(得分:5)

不要使用setInterval,在收到回复后使用setTimeout启动另一个请求。

答案 1 :(得分:4)

500ms太频繁了。尝试2秒后,一旦工作就可以向后工作。此外,您可能希望执行类似2秒开始的操作,如果在尝试一些次数后不起作用,则增加到5秒(或其他)。我看到了很多。

注意,不得不进行民意调查。如果您拥有100个并发用户的适度用户群,并且他们都在使用需要轮询的工作流,那么您的应用程序每秒钟就会充斥着数百个请求。换句话说,除非您有资源水平站起服务器,否则轮询不能很好地扩展。根据您的使用情况,最好只提交初始请求以异步启动长时间运行的进程,并告诉用户在2分钟后再回来查看。

让我问一下:轮询完成的任务需要多长时间才能完成?