始终运行的 Web 应用程序上的动画滞后和性能问题

Animation lag and performance issues on web application that is always running

本文关键字:滞后 动画 程序上 性能 问题 应用程序 运行 Web 应用      更新时间:2023-09-26

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

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

我已经阅读了一些关于FF垃圾收集器不适合其JS引擎的内容,但我真的不知道这是否是问题所在。我正在寻找有关如何处理这种情况的任何一般指导。

谢谢

您没有提供任何代码,但我怀疑这是setInterval(在评论中提到(的组合使用导致问题的 Ajax 调用。

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

如果它的 CASE 1(AJAX 在 setInterval 内(而不是 不要 - 你很快就会用 ajax 调用淹没你的页面(使用 firebug 查看调用列表(......在这种情况下,您可以使用递归 AJAX 函数,该函数将在完成后调用它 self。

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

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

关于 24/7 和表的增长:

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