Wie funktioniert JavaScript-Speicher in Browsern?

8

Beim Entwickeln von fortgeschrittenen JS-Interfaces und Spielen habe ich herausgefunden, dass ich tiefer einsteigen muss, wie Browser Speicher für JS handhaben. Meine Erfahrung mit Speicher und JavaScript ist, dass der Speicher gegloggt wird (und Animationen und Berechnungen verlangsamt / verzögert), wenn:

  • Es gibt viele JS-generierte Inhalte auf der Seite
  • Es gibt viele Grafiken (img-elements) auf der Seite?

Ich habe daher festgestellt, dass, wenn ich mein Gedächtnis frisch halten möchte, ich so viel HTML-Code wie möglich vom Anfang des Dokuments einfügen sollte, da es zwischengespeichert und nicht im Speicher gehalten wird. Und natürlich entfernen Sie alle derzeit nicht verwendeten Elemente.

Hat jemand mehr Informationen dazu? Ressourcen? Links?

    
Jens 02.11.2009, 14:50
quelle

3 Antworten

7

Einige Dinge zu beachten:

  • IE wird von DOM Komplexität getötet. Je mehr Elemente Teil der Seite sind, desto langsamer wird es. Ich habe gesehen, dass Seiten mit nur 3000 Elementen merklich langsamer werden (wenn Sie ein Raster mit 10 Spalten und 100 Zeilen haben, sind das genau 1000 Elemente). Der richtige Ansatz besteht typischerweise darin, versteckte Teile aus dem DOM zu entfernen (sie zu lösen)
  • IE hat auch eine lange Geschichte, HTML-Elemente nicht korrekt zu befreien, wenn sie JavaScript-Handler angehängt haben. Wenn Sie eine langlebige Seite haben, die häufig aktualisiert wird, lesen Sie IE-Speicherlecks und wie Sie diese Probleme umgehen können.
  • Alle Browser speichern Bilder unkomprimiert im Speicher. Wenn Sie also im Hintergrund ein paar Millionen Bilder vorladen, ist das im Allgemeinen eine schlechte Idee.
  • Das Aktualisieren von DOM-Eigenschaften führt zu Seitenumbrüchen, die auf komplexen Seiten sehr lange dauern können. Manchmal sind sogar DOM-Eigenschaften (z. B. offsetHeight) sehr langsam.

Im Allgemeinen ist Javascript selbst kein Leistungsengpass. Was es tötet, ist die Interaktion mit dem DOM. Code, der das DOM nicht berührt, hat selten Leistungsprobleme. Es gibt hier nur Faustregeln: Interagieren Sie so selten wie möglich mit dem DOM, halten Sie die DOM-Komplexität so gering wie möglich, vermeiden Sie wiederholte Seitenumbrüche.

    
Joeri Sebrechts 02.11.2009, 16:39
quelle
3

Für den Anfang. Alles HTML, ob es "von Anfang an enthalten" ist oder nicht, wird im Speicher gehalten. Höchstwahrscheinlich auch der gesamte Bildinhalt für die aktuelle Seite. Auf ein Minimum, alles, was Sie auf dem Bildschirm zu einem bestimmten Zeitpunkt sehen, wird zu diesem Zeitpunkt im Speicher gehalten.

    
Mikael Auno 02.11.2009 14:55
quelle
2

Es hängt eher davon ab, was Sie damit tun, um ehrlich zu sein. Viele Grafiken werden nicht zu Javascript hocken, wenn Sie nicht mit ihnen interagieren, aber wenn Sie eine riesige Seite mit verschiedenen Elementen gefüllt haben und Sie suchen das gesamte Dokument nach einem einzelnen Element, dann ist das ein anderer Ding völlig.

Ich hatte Probleme, Dinge wie große Mengen von Ereignissen auf Seiten hinzuzufügen. Zu viele Schleifen in einer Seite und zu viele Timer ausführen.

Wenn JavaScript-Leistung ein Problem darstellt und Sie intensives JavaScript ausführen möchten, sollten Sie sich Webworkers ansehen . Hier noch ein paar Links zu Webworkern:

Steerpike 02.11.2009 14:56
quelle

Tags und Links