投稿された新しいメッセージをフェッチするために、毎秒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文字列が格納された内部キャッシュがあり、開発者が上記のようなコードを使用すると、キャッシュが決してクリアされないためメモリリークのように見えました。 –
私が理解できなかったことは$( '#chat .messages')です.html(data);あなたはいつもAJAXリクエストでチャットの内容全体を取得しますか?私はあなたがまだ読まなかった部分だけをリクエストして、これを.messagesに追加するべきだと思います。さもなければ、データは最終的に巨大なテキストになります。 –