Performance einer Lokalen Anwendung
hotti
- javascript
hi,
mit dieser Anwendung, im neuesten FF, gehts richtig flüssig, sowohl die Auswahl/Darstellung eines Eintrages als auch die Suche, im IE8 hingegen kommt das mächtig ins Stocken, woran könnte das liegen und was gäbe es zu tun??
Bitte mal um Hinweise,
vielen Dank im Vorab!
Hello Rolf,
Gib uns doch mal den Zugriff auf Deinen lokalen Webserver ;-)
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
hi,
Gib uns doch mal den Zugriff auf Deinen lokalen Webserver ;-)
Mist, wiedermal das .de vergessen ;)
Danke Dir für den Hinweis, hier isses erreichbar:
Horst
Hi,
im neuesten FF, gehts richtig flüssig, sowohl die Auswahl/Darstellung eines Eintrages als auch die Suche, im IE8 hingegen kommt das mächtig ins Stocken, woran könnte das liegen und was gäbe es zu tun??
Nur kurz drüber geschaut, aber du machst appendChild in einer Schleife in der Art, dass es direkt ins DOM geht – wenn es sich um viele Elemente handelt, kann das der Performance schon stark abträglich sein. Sowas sollte man erst außerhalb des DOM machen – und dann das Elternelement erst dann (wieder) ins DOM einhängen, wenn alle Kindelemente hinzugefügt sind. Oder, wenn du das Elternelement nicht aus dem DOM nehmen kannst/willst, die neuen Elemente erst mal in einem DocumentFragment zu „sammeln“, und dann dieses ins Elternelement einzuhängen (wobei das Fragment selber sich quasi „auflöst“).
Davon abgesehen müssen DOM-Operationen je nach Browser auch nicht unbedingt die schnellste Art und Weise sein, Elemente zu erzeugen – manchmal ist auch bspw. innerHTML zum „Erzeugen“ von Elementen performanter. Aber bevor du das komplett umstrickst, probier erst mal obiges umzusetzen.
MfG ChrisB
Hi Chris,
Nur kurz drüber geschaut, aber du machst appendChild in einer Schleife in der Art, dass es direkt ins DOM geht – wenn es sich um viele Elemente handelt, kann das der Performance schon stark abträglich sein.
Herzlichen Dank, das guck ich mir mal genauer an...
Sowas sollte man erst außerhalb des DOM machen – und dann das Elternelement erst dann (wieder) ins DOM einhängen, wenn alle Kindelemente hinzugefügt sind.
... die erste Bremse also hierda:
function listcontent(){
var str = store.get('dbf');
EAV = splitEAV(str);
var select = _("stoID");
for(var ent in EAV){
var title = EAV[ent]['title'];
select.options[select.options.length] = new Option(title, ent);
}
}
beim Füllen des Selects mit Options?
Oder, wenn du das Elternelement nicht aus dem DOM nehmen kannst/willst, die neuen Elemente erst mal in einem DocumentFragment zu „sammeln“, und dann dieses ins Elternelement einzuhängen (wobei das Fragment selber sich quasi „auflöst“).
Nächste Bremse wäre mit appendChild der Aufbau der Suchergebnis-Liste.
Davon abgesehen müssen DOM-Operationen je nach Browser auch nicht unbedingt die schnellste Art und Weise sein, Elemente zu erzeugen – manchmal ist auch bspw. innerHTML zum „Erzeugen“ von Elementen performanter. Aber bevor du das komplett umstrickst, probier erst mal obiges umzusetzen.
So ganz verstehe ich's noch nicht.
Viele Grüße,
Horsti
hi,
Nur kurz drüber geschaut,
Nochmal danke!!! Hab das Issue "DOM" partiell mal ausgeschaltet und in Sachen Suchfunktion die 'and' Option als Bremse ermittelt. Die diesbezügliche RegExp ist wohl doch etwas gefräßig, mit der 'or' Option geht die Suche deutlich schneller. Ich werde morgen mal testen ob eine JSON-Lösung mehr Perfomance bringt beim Auspacken der Daten in das EAV-Objekt.
Gut' Nacht ;)