JQuery Auto Обновить Div - PullRequest
       19

JQuery Auto Обновить Div

7 голосов
/ 20 июня 2010

Автоматическое обновление Jquery использует много памяти браузера.Есть ли способ остановить это.У меня было 2 деления обновления каждые 3 секунды, но я переместил его на 9 и 15 секунд. Это немного помогало: чем дольше окно остается открытым на моем сайте, тем больше памяти требуется, пока, наконец, браузер не выйдет из строя.

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js" ></script>


<script>
var auto_refresh = setInterval(
function ()
{
$('#details2').load('links2.php').fadeIn("slow");
}, 15000); // refresh every 10000 milliseconds</script>

Ответы [ 3 ]

2 голосов
/ 22 июня 2010

Вы можете попытаться пропустить load () и использовать вместо него $ .ajax.Я знаю load ();это запрос AJAX, но, кажется, я помню, он получает весь сценарий.Попробуйте запросить скрипт, выполните вычисления в своей базе данных и верните данные в формате json.Я предполагаю, что вы отправляете полный HTML с данными из запроса базы данных.Попробуйте вместо этого использовать json.

Вы получите данные как объект, например, вот так.

{"variable":"foo"}

Затем вы можете получить данные с помощью простого оператора each.

$.ajax({
    url: "links2.php",
    type: "POST",
    dataType: "json",
    success: function(data){

       // data here is returned as objects since it's json
       $.each(data, function(key, value) {
            $("#details2").empty().append(value.variable);
       }); 

    }
});

Я думаю, что это не должно привести к утечке памяти и в конечном итоге к краху браузера, даже если вы вызываете его каждую секунду или около того.Попробуйте и дайте мне знать, как это происходит.

Удачи!

0 голосов
/ 23 августа 2012

Хотя ответ был одобрен, но я должен сказать вам это.У меня была такая же проблема.

Я нашел проблему в src файла JQuery.Я использовал URL сайта JQuery в качестве источника, и это увеличило использование компьютера до 99%.Но затем я скачал весь JQuery Script и сохранил его в каталоге моего веб-сайта, я использовал это в своем источнике, и тогда не было никаких проблем с использованием компьютера или памяти.Попробуйте тоже ..

0 голосов
/ 20 июня 2010

Попробуйте изменить это на:

// ...
$('#details2').empty().load('links2.php').fadeIn('slow');

Может прекратиться явное указание jQuery сначала очистить контейнер, чтобы он мог освободить любые обработчики событий и т. Д. (Хотя не ясно, что там будут какие-либо обработчики ...)

изменить & mdash; на самом деле неважно; Я проверил исходники jQuery, и похоже, что вызов .html() (который, как я уверен, load()) всегда сначала вызывает empty().

...