始终在运行的Web应用程序上的动画延迟和性能问题

时间:2014-12-19 19:45:44

标签: javascript jquery firefox

我正在开发的网络应用程序非常典型。 MySQL存储数据,PHP检索,jQuery使其看起来不错,而AJAX使其异步。

我的客户端只使用FireFox,并且可能会全天候开放网页应用。该应用程序可能会在几个小时内请求很多数据,并且不断更新页面上的大表。我注意到FireFox在一个小时左右的时间里,jquery动画(即使是最简单的动画)也会开始滞后。我已经确认这是原因(浏览器打开很长一段时间),因为启动一个全新的浏览器将解决这个问题。

我已经阅读了一些关于FF垃圾收集器不是最佳JS引擎的东西,但我真的不知道这是不是问题。我正在寻找有关如何处理这种情况的任何一般性指导。

由于

1 个答案:

答案 0 :(得分:1)

您没有提供任何代码,但我怀疑其setInterval(在评论中提到)合并了 使用导致问题的ajax调用。

如果我做对了,你会在间隔函数( CASE 1 )中不断发出异步AJAX调用。 或者您正在为ajax调用生成的每一行触发一个区间函数( CASE 2 )。

如果 CASE 1 (在setInterval中的AJAX)比不要 - 你很快就用ajax调用充斥你的页面(使用firebug查看调用列表)......在这种情况下,你可以使用一个递归的ajax函数,一旦完成就会调用它。

如果 CASE 2 - 您提到的间隔为1毫秒,每次调用的比率为0-100(假设为50), 再次,你正在创建很多功能,你正在把系统(内存,GC,循环处理程序)投入到可能导致页面挂起和滞后的艰苦工作......在这种情况下考虑使用"池&#34 ;宾语 你的行将被临时存储,只有一个永久间隔函数,它将逐个抓取行并以你想要的速率将它们绘制到页面上(不要忘记从池对象中删除行)。

如果这些案例与您的方法不符,请考虑向我们展示您的代码或有问题的页面。

关于24/7和桌面增长:

您应该考虑分页机制或页面刷新策略,因为页面越大,它需要的内存越多 - 您正在生成一个快速增长的表,没有人可以处理,读取,理解该数据量(在速率1ms~1新行)。你应该专业,并使用户更友好"方法并且可能实现无限滚动样式以加载新行或转储旧行。