2010-04-09 51 views
5

我有一个经常更新的信息表。这是使用每行包含10个div的容器div展示的。哪个是内存泄漏最安全的方法

我使用setInterval来调用一个返回一些json格式信息的asmx webservice。

在成功回调函数上,我在容器div上调用$("#myContainer").empty();,并为每行的列重新创建行和10个嵌套div。

这个页面可能会运行一整天,所以我很警惕更新DOM,因为我已经注意到随着时间的推移(IE8)浏览器的内存确实增加。

我正在考虑的另一种方法是添加一个id到行div。当新结果处理每个数据项时,如果它存在覆盖每个div中的数据,则查找相应的行。如果它不存在(例如新数据),请追加该行。

其他人使用什么方法来处理这种长期存在的伪实时信息显示。

TIA

回答

5

一般情况下,一个非常安全的方式,以防止内存泄漏是从破坏并重新创建DOM元素克制。在像你这样的情况下,我总是尝试保持最初的DOM结构,并且只要在来自AJAX请求的新数据可用时更新元素的内部文本。

+0

这是一个公认的事实吗?你有没有参考,不是我怀疑你,它会更好地阅读更多。 – raveren 2010-04-09 11:42:50

+2

@Raveren:不,这不是一个可靠的事实。实际上,这是一种非常悲观的方式,因为我确信现代浏览器在创建/删除DOM元素时不仅能够管理内存。尽管如此,在长时间的Web应用程序(那些开放了几天)中发现内存泄漏是一件令人头疼的事情,我总是试图坚持这种悲观主义的方式。显然这对于​​复杂的GMail风格的应用程序来说是不可能的。但看起来OP只是简单地实时更新数据表,在这种情况下,我会尝试我先建议的方法。 – 2010-04-09 11:54:06