最佳实践:在Javascript中运行很长时间的轮询过程

Best practice: very long running polling processes in Javascript?

本文关键字:长时间 过程 运行 Javascript 最佳      更新时间:2023-09-26

我正在开发一个触摸屏kiosk应用程序,该应用程序将部署在最新版本的Chrome上。

该应用程序需要每隔10分钟左右对web服务进行AJAX调用,以获取任何更新的内容。

由于它是一个kiosk应用程序,所以页面不太可能经常重新加载,理论上,除非关闭kiosk,否则该应用程序可能一次运行几天。

我想我关心的是内存使用情况,以及运行很长时间的setTimeout循环是否会占用大量内存是否有足够的时间。

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

干杯,Terry

浏览器有一个垃圾收集器,所以没有问题。只要你不通过坏代码引入内存泄漏。这里有一篇文章和另一篇关于内存泄漏模式的文章。这应该让你开始学习如何高效地编程,并解决那些泄漏的代码。

此外,您还必须考虑DOM。SO中的一个人曾说过,"不在屏幕上的东西应该被删除,而不仅仅是隐藏"——这不仅删除了查看视角中的实体,而且实际上从DOM中删除了它,删除了它的处理程序,它使用的内存将被释放。

至于setTimeout,请延长调用之间的间隔。太快,将快速消耗内存(并使页面变得非常…滞后)。我刚刚测试了基于定时器的"hashchange"检测代码,即使在chrome上,它也会使页面变得相当慢。

研究chrome的bug并保持更新。