我写了一个小聊天框小部件,它每秒都会运行一次ajax调用,以获取已发布的新消息。问题在于内存泄漏,打开大约15分钟后,它会使我的浏览器(Firefox)崩溃。jQuery AJAX调用内存泄漏
这也可能是我的,因为我是一个相对的新手,我敢肯定,我已经错过了一些东西,或者我不是我解封变量等。
var chat = {}
chat.fetchMessages = function() {
$.ajax({
url: '/chat_ajax.php',
type: 'post',
data: { method: 'fetch'},
success : function(data) {
$('#chat .messages').html(data);
$("#chat").scrollTop($("#chat")[0].scrollHeight);
}
});
}
chat.interval = setInterval(chat.fetchMessages, 1000);
chat.fetchMessages();
有人可以看一眼我的(基本)代码,并查看是否可以发现内存泄漏发生的位置,以及我在做什么错误?我是否需要解除某些变量或其他?
非常感谢!
什么版本的jQuery?如果你包含jQuery 1.9.1,它还会发生吗?老版本的jQuery有一个内部缓存,其中存储了简单的html字符串,然后当开发人员使用上述代码时,它会生成看起来像是内存泄漏的内容,因为缓存永远不会被清除。 – 2013-03-14 15:57:04
我不明白的是$('#chat .messages')。html(data);你是否总是通过AJAX请求获取整个聊天内容?我认为你应该只请求没有阅读的部分用户将它附加到.messages。否则数据将最终成为一个巨大的文本。 – 2013-03-14 17:26:59