2010-06-20 23 views
7

L'aggiornamento automatico di Jquery utilizza un MOLTO di memoria del browser. C'è un modo per fermare questo. Ho avuto un 2 div rinfrescante ogni 3 secondi ma l'ho spostato a 9 e 15 secondi, Ha aiutato un po 'più a lungo la finestra rimane aperta sul mio sito più memoria ci vuole fino alla fine del browser si blocca.Jquery auto refresh div

<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> 
+0

Quale plugin/codice stai usando per fare questo? – Matt

+2

Puoi inserire parte del codice in questione? – Pointy

+0

risposta

2

Si potrebbe provare a saltare il carico() e utilizzare $ .ajax invece. Conosco load(); è una richiesta di ajax ma mi sembra di ricordare che recupera l'intera sceneggiatura. Prova a richiedere uno script, a fare i calcoli del tuo database e restituire i dati come json. Presumo che tu stia inviando un html completo con i dati dalla richiesta del database. Prova questo con JSON invece.

Otterrai i dati come un oggetto, come questo ad esempio.

{"variable":"foo"} 

Quindi è possibile recuperare i dati con una semplice ogni dichiarazione.

$.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); 
     }); 

    } 
}); 

Penso che questo non dovrebbe perdere la memoria e alla fine mandare in crash il browser, anche se lo si chiama ogni due secondi circa. Fai un tentativo e fammi sapere come va.

Buona fortuna!

+0

grazie stefan, questo sembra abbastanza semplice da funzionare. –

0

Provare a cambiare a questo:

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

Può halp dire esplicitamente jQuery per svuotare il contenitore prima, in modo che possa liberare eventuali gestori di eventi, ecc (Anche se non è chiaro che ci sarebbero tutti i gestori in là ...)

modifica — in realtà non importa; Ho controllato i sorgenti di jQuery e sembra chiamare lo .html() (che è lo stesso load(), mi sembra sempre di chiamare sempre empty().

+0

Proverò qualcuno che sa che potrebbe funzionare. Grazie –

0

Anche se è stata approvata una risposta, ma dovrei dirlo. Ho avuto lo stesso problema.

Ho trovato il problema in src del file JQuery. Ho usato l'url del sito JQuery come sorgente e ho aumentato il mio utilizzo del computer al 99%. Ma poi ho scaricato l'intero script JQuery e l'ho salvato nella directory del mio sito web, l'ho usato nella mia fonte e quindi non c'era alcun problema con l'utilizzo del computer o la memoria. Prova anche tu ..