Napisałem mały widget czatu, który co sekundę wywołuje wywołanie ajax, aby pobrać nowe wiadomości, które zostały opublikowane. Problem polega na tym, że jest to przeciekająca pamięć, a po około 15 minutach od otwarcia powoduje awarię mojej przeglądarki (Firefox).Przeciek pamięci w jQuery AJAX wywołuje
To chyba ja, ponieważ jestem początkującym względny, a jestem pewien, że tęskniłem za coś lub ja nie wyłączające moje zmienne itp ..
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();
może ktoś proszę spojrzeć na moje (podstawowe) i sprawdź, czy możesz wykryć, gdzie występuje wyciek pamięci i co robię źle? Czy muszę usunąć niektóre zmienne lub coś takiego?
Wielkie dzięki!
Jaką wersję jQuery? Jeśli dołączysz jQuery 1.9.1, czy nadal występuje? Starsze wersje jQuery miały wewnętrzną pamięć podręczną, w której przechowywano proste ciągi html, a kiedy programiści użyli kodu takiego jak twój powyżej, wygenerowali coś, co wydawało się wyciekiem pamięci, ponieważ pamięć podręczna nigdy nie jest czyszczona. –
to, czego nie rozumiem, to $ ("# chat .messages"). Html (dane); czy zawsze otrzymujesz całą treść czatu za pomocą żądania AJAX. Myślę, że powinieneś poprosić tylko użytkownika, którego jeszcze nie przeczytałeś, dołączyć do .messages. w przeciwnym razie dane będą ostatecznie wielkim tekstem. –