我正在开发一个单页应用程序,它使用 jqWidgets 库中的许多小部件(主要是网格和选项卡),这些小部件都是在页面加载时加载的。它变得相当大,我在使用后开始注意到(我强调使用,因为它不会在打开任何时间后开始滞后,但具体来说,在我的页面上打开和关闭一堆选项卡之后,每个选项卡都包含通过 Ajax 加载的多个网格,这些网格具有多个事件侦听器绑定到每个)网站几分钟后,用户界面变得非常缓慢,有时甚至没有响应,当页面刷新时,一切都再次顺利运行了几分钟,然后又回到了滞后状态。我仍在本地主机上进行测试。我最初的反应是 DOM 有太多元素(每个网格创建数百个 div!而且我有很多)所以与 ID 绑定的事件侦听器必须搜索太多元素并变得缓慢。如果是这种情况,它不会太难解决,是我的假设可能是罪魁祸首还是我有更糟糕的事情要担心?
更新:这里是内存时间线和堆快照的捕获。在内存时间线上没有与网站的交互,两个大的增加是页面刷新,中间的锯齿部分只是让我的网站闲置。