2010-06-20 13 views
7

Jquery automatische Aktualisierung verbraucht viel Browserspeicher. Gibt es eine Möglichkeit, dies zu stoppen? Ich hatte eine 2 div Aktualisierung alle 3 Sekunden, aber ich habe es auf 9 und 15 Sekunden verschoben. Es half ein bisschen, je länger das Fenster auf meiner Seite geöffnet bleibt, desto mehr Speicher dauert es, bis der Browser abstürzt.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

Welches Plugin/Code verwenden Sie, um dies zu tun? – Matt

+2

Können Sie einen Teil des betroffenen Codes veröffentlichen? – Pointy

+0

Antwort

2

Sie könnten versuchen, die load() zu überspringen und stattdessen $ .ajax verwenden. Ich kenne load(); ist eine Ajax-Anfrage, aber ich erinnere mich, dass es das ganze Skript holt. Versuchen Sie ein Skript anzufordern, führen Sie Ihre Datenbankberechnungen durch und geben Sie die Daten als json zurück. Ich nehme an, dass Sie komplettes HTML mit den Daten von der Datenbankanforderung senden. Versuchen Sie dies mit Json stattdessen.

Sie erhalten die Daten als ein Objekt, wie dies zum Beispiel.

{"variable":"foo"} 

Dann können Sie die Daten mit einer einfachen jeder Anweisung holen.

Ich denke, dies sollte nicht Ihren Speicher und schließlich Ihren Browser zum Absturz bringen, auch wenn Sie es jede zweite Sekunde oder so nennen. Probieren Sie es aus und lassen Sie mich wissen, wie es geht.

Viel Glück!

+0

danke stefan, das scheint einfach genug zu funktionieren. –

0

Versuchen Sie es zu diesem Wechsel:

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

Es kann halp explizit jQuery zu sagen, die Behälter zuerst zu leeren, so dass es keine Event-Handler usw. freisetzen kann (Obwohl es nicht klar, dass es wären irgendwelche Handler dort ...)

bearbeiten — eigentlich macht es nichts aus; Ich überprüfte die jQuery-Quellen und es sieht aus wie .html() anrufen (was load() tut, bin ich mir ziemlich sicher) scheint immer zuerst empty() sowieso anrufen.

+0

Ich werde es versuchen, wer weiß, es könnte funktionieren. Danke –

0

Obwohl eine Antwort genehmigt wurde, aber ich sollte dir das sagen. Ich hatte das gleiche Problem.

Ich habe das Problem in Src von JQuery-Datei gefunden. Ich habe die JQuery-Site-URL als meine Quelle verwendet, und Yup hat meine Computer-Nutzung auf 99% erhöht. Aber dann habe ich das ganze JQuery-Skript heruntergeladen und in meinem Website-Verzeichnis gespeichert, das habe ich in meiner Quelle verwendet und dann gab es kein Problem mit der Computernutzung oder dem Arbeitsspeicher. Versuchen Sie das auch.