2009-03-14 8 views
1

Ich erstelle ein progressiv aufgebautes, einseitiges (wenn Javascript aktiviert ist) "Blog", das AJAX verwendet, um HTML für neue Seiten anzufordern, zu denen der Benutzer navigiert.DOM-Speicher und CPU-Verwaltung

Wenn der Benutzer navigiert zu neuen Seiten werden sie mit einer nach dem anderen in das DOM in einem kleinen Fenster hinzugefügt werden „overflow: hidden;“:

<div id="foo" style="width:200px; height:100px;"> 
    <div id="bar" style="width:999999px"> 
    </div> 
</div> 

Wenn ein AJAX-Aufruf liefert Erfolg ein div sein in #bar angehängt.

Wie wirkt sich dies auf den Browser aus, wenn viele verdeckte Seiten außerhalb der #foo-Breite liegen?

Muss ich die divs aus dem DOM entfernen, wenn der Benutzer von ihnen weg navigiert? Dann muss ich eine neue AJAX-Anfrage machen, wenn der Benutzer wieder zu ihnen navigieren möchte. :(

Dank

Willem

Antwort

2

Egal, was die Leute sagen GC wird für Sie tun, ob in JavaScript oder C# oder Java, pass auf und vergiss das dumme Versprechen der automatischen Verwaltung. Reinige es explizit und schlafe gut.

Sehr einfacher Grund: Verschlüsse lecken und lecken ziemlich schlecht in dem Moment, in dem Sie aus den meisten vereinfachten Szenarien auswandern (sowohl für Brower's JavaScript als auch C#/Java).

+0

Bitte definieren Sie GC. Als Anfänger-Entwickler habe ich auch Probleme zu verstehen, was Sie mit Schließung meinen. Danke – Willem

+0

GC, Garbage Collector, Teil Ihres Browsers, Runtime und gelegentlich OS Virtual Memory Manager. Für das Verständnis von Schließungen ist es wichtig, wie Sie in funktionalen Stil und Lambdas und einige Delegaten Nutzung tauchen. http://en.wikipedia.org/wiki/Closure_(computer_science).Be explizit und aufräumen, es zahlt sich aus. –

+0

Entfernen Sie den ".Be" -Teil (Der Markup-Interpreter auf Stackoverflow hat klassische Probleme). Nur Google für bestimmte Schließung Verwendung in bevorzugten Sprache, ob JS, C# oder Java. –

0

Moderne Browser Layout-Motoren sind in der Regel intelligent genug, um nicht Elemente zu verarbeiten, die versteckt sind, so dass es nicht viel CPU-Leistung nehmen. Aber das Hinzufügen einer großen Anzahl von Knoten mit sehr komplexe Objektdiagramme können in manchen Browsern teuer sein, daher bin ich vorsichtig damit und beachte, dass sie auch dann noch als Teil des DOMs vorhanden sind, wenn sie nicht angelegt sind, und die Speichernutzung könnte durchaus zu einem Problem werden Bedenken Sie, wenn diese Knoten groß sind.