Hab das grad noch mal gecheckt. Du nutzt synchrone Calls für AJAX. Mach das nicht.
Jou!
Verwende besser die aktuelle Version von jQuery.
Bezüglich AJAX wurde da einiges verbessert und optimiert.
(1.5 ist sieben Jahre alt)
setInterval statt setTimout, um einmalig den Timer zu setzen/initialisieren
Referenzen auf Elemente speichern, statt sie immer wieder neu abzufragen (getElementById)
Anzahl der globalen Variablen möglichst kleinhalten
... usw. usf.
setInterval statt setTimout
Ich habe jetzt die neuste jquery version eingestellt.
Bist du dir sicher das in meinem Fall "setInterval" besser ist als "setTimout"? Weil ich kann mich dran erinnern das ich in den letzten Tagen etwas gelesen hatte wo gemeint wird das man "setInterval" am besten bei sowas wie Simulationen benutzen sollte und "setTimeout" waere die Variante wo dem Ablauf mehr Zeit gegeben wird, bei "setInterval" wird alles direkt durchgefuehrt, also so habe ich den Artikel zumindest verstanden, der war auf Englisch.
Ueber das Thema globale Variablen habe ich auch etwas gelesen, da wurde auch bemerjt das globale Variablen irgendwie mehr Speicher verbrauchen, aber wenn ich jetzt zum Beispiel innerhalb der Funktionen die Variablen erstelle, wuerde das nicht noch mehr Speicher verbrauchen, weil dann jedesmal die Variable neu erstellt wird?
Beispiel 1, Variablen innerhalb der Funktion deklarieren:
|
Quellcode
|
1
2
3
4
5
6
7
8
|
function ServerFunktion()
{
var strurl="Save_data_1.php?name="+Downloadliste_Object.Name[ZaehlerIndex];
var res=$.ajax({ url: strurl, contentType:"application/json", dataType:"json", async: false }).responseText;
//---- 2000 = 2 sekunden
setTimeout(ServerFunktion, 2000);
}
|
Beispiel 2, Variablen ausserhalb der Funktion deklarieren:
|
Quellcode
|
1
2
3
4
5
6
7
8
9
10
|
var strurl="";
var res="";
function ServerFunktion()
{
strurl="Save_data_1.php?name="+Downloadliste_Object.Name[ZaehlerIndex];
res=$.ajax({ url: strurl, contentType:"application/json", dataType:"json", async: false }).responseText;
//---- 2000 = 2 sekunden
setTimeout(ServerFunktion, 2000);
}
|
Welche von beiden erzeugt weniger RAM Verbrauch?
Und wie ist es mit dem Objekt, welche Variante verbraucht weniger RAM.
Beispiel 1, Objekt innerhalb der Funktion deklarieren;
|
Quellcode
|
1
2
3
4
5
6
7
8
9
10
11
12
13
|
function ServerFunktion()
{
var Downloadliste_Object = new Object();
Downloadliste_Textinhalt = $.ajax({ url: "Downloadliste.txt", contentType:"application/json", dataType:"json", async: false }).responseText;
if(isJson(Downloadliste_Textinhalt)==true)
{
Downloadliste_Object = JSON.parse(Downloadliste_Textinhalt);
}//json Check
//---- 2000 = 2 sekunden
setTimeout(ServerFunktion, 2000);
}
|
Beispiel 2, Objekt ausserhalb der Funktion erstellen:
|
Quellcode
|
1
2
3
4
5
6
7
8
9
10
11
12
13
|
var Downloadliste_Object = new Object();
function ServerFunktion()
{
Downloadliste_Textinhalt = $.ajax({ url: "Downloadliste.txt", contentType:"application/json", dataType:"json", async: false }).responseText;
if(isJson(Downloadliste_Textinhalt)==true)
{
Downloadliste_Object = JSON.parse(Downloadliste_Textinhalt);
}//json Check
//---- 2000 = 2 sekunden
setTimeout(ServerFunktion, 2000);
}
|
Wenn ich das Objekt innerhalb der Funktion erstelle, wuerde das dann nicht immer wieder neu erstellt und der RAM Verbrauch schneller nach oben gehen?
Kannst du mir auch ein Beispiel geben wie das aussieht wenn man Referenzen auf Elemente speichert?
Ich habe hier ein Beispiel gebaut wo aber eine Fehlermeldung bei raus kommt.
|
Quellcode
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
var Downloadliste_Object = new Object();
var Referenz1=document.getElementById("test2");
function ServerFunktion()
{
Downloadliste_Textinhalt = $.ajax({ url: "Downloadliste.txt", contentType:"application/json", dataType:"json", async: false }).responseText;
if(isJson(Downloadliste_Textinhalt)==true)
{
Downloadliste_Object = JSON.parse(Downloadliste_Textinhalt);
strurl="Save_data_1.php?name="+Downloadliste_Object.Name[ZaehlerIndex];
res=$.ajax({ url: strurl, contentType:"application/json", dataType:"json", async: false }).responseText;
Referenz1.innerHTML = res;
}//json Check
//---- 2000 = 2 sekunden
setTimeout(ServerFunktion, 2000);
}
|