2010-04-09 41 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