0

我一直在跟踪我们的一个 javascript 应用程序中的一个性能问题(在 IE 中,更糟糕的是),我能够将其跟踪到 jQueryUI 按钮功能。我创建了一个显示问题的jsfiddle。问题是3个部分:

首先,按钮的生成非常缓慢。该页面在 IE8 下 5 秒以上生成 800 个按钮,而当我禁用按钮功能时大约需要 700 毫秒。更糟糕的是,每个创建/删除周期都会变得越来越慢。相比之下,在 Chrome 中,使用按钮功能只需不到一秒(大约 600 毫秒),而没有按钮功能大约需要 50 毫秒。这两种浏览器的速度都降低了 10 倍!

其次,删除/销毁所有这些按钮也很慢。我使用empty()容器上的方法来清理所有按钮,并最终调用destroy按钮。此操作在 IE8 下大约需要 5 秒,在 Chrome 下需要 500 毫秒。删除 jquery 按钮功能后,在 IE8 中需要 200 毫秒,在 Chrome 中需要 30-40 毫秒。这是 20 倍的减速,比自己生成按钮还要糟糕。

第三,按钮功能似乎在 IE 中导致了巨大的内存泄漏。反复创建和删除按钮会导致内存使用量不断增加,但再次删除按钮功能可以解决此问题。

谁能解释这种行为?这是应该报告的 jQueryUI 中的性能问题还是我遇到了陷阱?任何解决方法?

注意:当我说我删除按钮功能时,并不是我<button>从文档中删除了元素,只是我删除了对 jqueryUI 按钮功能的调用:

.button({
   'text': true
})
4

0 回答 0