2010-06-20 15 views
7

La actualización automática de Jquery está usando MUCHA memoria del navegador. ¿Hay alguna manera de detener esto? Tuve un 2 div refrescantes cada 3 segundos, pero lo moví a 9 y 15 segundos. Ayudó un poco más cuanto más tiempo permanece abierta la ventana en mi sitio, más memoria demora hasta que finalmente falla el navegador.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

¿Qué plugin/código estás usando para hacer esto? – Matt

+2

¿Puedes publicar algo del código involucrado? – Pointy

+0

Respuesta

2

Puede intentar omitir la carga() y usar $ .ajax en su lugar. Sé cargar(); es una solicitud de AJAX, pero parece recordar que recupera todo el script. Intente solicitar un script, haga los cálculos de su base de datos y devuelva los datos como json. Supongo que está enviando html completo con los datos de la solicitud de la base de datos. Prueba esto con json en su lugar.

Obtendrá los datos como un objeto, como este, por ejemplo.

{"variable":"foo"} 

A continuación, puede buscar los datos con una simple cada declaración.

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

    } 
}); 

Creo que esto no debería filtrar la memoria y, finalmente, bloquear el navegador, aunque lo llames cada dos segundos más o menos. Pruébalo y cuéntame cómo funciona.

¡Buena suerte!

+0

Gracias Stefan, esto parece bastante simple para trabajar. –

0

Intente cambiar a esto:

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

Puede halp decirle explícitamente jQuery para vaciar el recipiente en primer lugar, por lo que puede liberar cualquier controlador de eventos etc. (Aunque no está claro que hay sería cualquier controlador allí ...)

editar — en realidad no importa; Comprobé las fuentes de jQuery y parece que llamar al .html() (que load() hace, estoy bastante seguro) siempre parece llamar siempre al empty().

+0

Lo intentaré cualquiera que sepa que podría funcionar. Gracias –

0

Aunque se ha aprobado una respuesta, debería decírselo. Yo tuve el mismo problema.

Encontré el problema en el archivo src de JQuery. Utilicé la URL del sitio de JQuery como mi fuente y, sin embargo, aumentó el uso de mi computadora al 99%. Pero luego descargué todo el JQuery Script y lo guardé en el directorio de mi sitio web, lo usé en mi fuente y luego no hubo problemas con el uso de la computadora o la memoria. Inténtalo también ...