最佳实践:在Javascript中运行非常长的轮询过程?

时间:2012-03-22 10:15:35

标签: javascript long-polling

我正在开发一款将在最新版本的Chrome上部署的触摸屏信息亭应用程序。

应用程序需要每10分钟左右对Web服务进行一次AJAX调用,以便通过任何更新的内容。

由于它是一个自助服务终端应用程序,该页面不太可能经常重新加载,理论上,除非自助服务终端关闭,否则应用程序可能会一次运行几天。

我想我的担心是内存使用情况以及是否有足够长的时间来运行一个长时间运行的setTimeout循环会咀嚼大量内存。

我目前正在考虑使用Web Workers,我也会调查Web套接字,但我想知道是否有人对此类事情有任何经验?

干杯, 特里

1 个答案:

答案 0 :(得分:2)

浏览器有一个垃圾收集器,所以没有问题。只要你不通过坏代码引入内存泄漏。这里是关于内存泄漏模式的an articleanother article。这应该让你开始有效地编程,并拍摄那些漏洞的代码。

另外,你必须考虑DOM。 SO中的一个人曾经说过“屏幕上没有的东西应该被删除而不仅仅是隐藏” - 这不仅会在查看视角中删除实体,而且实际上会从DOM中移除它,删除它的处理程序,以及它的记忆使用将被释放。

对于setTimeout,延长调用之间的间隔。太快了,你快速咀嚼内存(并使页面变得非常......滞后)。我刚刚测试了基于计时器的“hashchange”检测的代码,甚至在chrome上,它确实使页面变得相当慢。

研究铬的缺陷并保持更新。