2010-02-21 4 views
15

Ich habe mich gerade gefragt, was ist der Vorteil der Client-Seite Architektur GMail folgt. Ich meine, was ist der Vorteil von mehreren Iframes auf der Seite; eins mit HTML-Layout und das zweite mit all den Javascripts?Welchen Vorteil bietet die Client-seitige Webarchitektur von Google Mail?

Ist es nicht komplizierter, alle DOM-Operationen auszuführen? (Sie müssen durch js ifram < suchen -> oben < -> HTML iframe).

Was denken Sie Experten?

+0

Ich denke "s/Wie/Was" – glasnt

+0

@TomatoSandwich: Es gibt keine "Wie" s in der Frage. Nichts wird ersetzt werden! (Edit: Mein Fehler! Die Frage wurde bearbeitet. Also sage ich dir lieber, dass du Änderungen mit einem vi oder ähnlichen Befehl vorgenommen hast!). –

Antwort

7

Kurz gesagt: für clientseitige Leistung.

Da GMail viel Javascript (ca. 700 KB) hat, dauert es einige Zeit, alles herunterzuladen und auszuführen. Wenn Sie einen separaten Iframe verwenden, wird durch das Herunterladen und Ausführen von JavaScript die Benutzeroberfläche des Browsers nicht blockiert. Skripte und UI-Ereignisse in separaten Iframes werden von den gängigen Browsern parallel ausgeführt. Dieser Ansatz ermöglicht es Ihnen auch, ein vollständiges DOM für die Schnittstelle in dem anderen iframe zu erstellen, während die Skripts noch ausgeführt werden. This article describes gemeinsame Lösungen für die Blockierung-Skripts Problem.

Ein weiterer Iframe ist erforderlich, damit der Browserverlauf funktioniert. Wie es genau funktioniert, können Sie in der Google Closure-Bibliothek in der implementation sehen.

Für die Auswirkungen auf die Komplexität, die sicherstellen, dass das richtige DOM manipuliert wird: Die Konstruktoren der UI-Komponenten in GMail (ebenfalls Teil der Closure Library) nehmen alle ein optionales DOM-Helferargument.Dieser Helfer ist an ein bestimmtes DOM gebunden, das sich in einem anderen Rahmen befinden kann. Das Manipulieren verschiedener DOMs ist vollständig in das Design dieser UI-Komponenten integriert.

4

Es ist ein "endless frame" für Reverse Ajax (der Server sendet eine Nachricht an den Client, wenn ein Ereignis eintritt, im Gegensatz zum normalen Ajax, bei dem der Client den Server etwas fragt). Von wikipedia:

Eine grundlegende Technik für dynamische Web- Anwendung ist ein verstecktes IFrame HTML-Element zu verwenden (einen Inline-Rahmen, die eine Website eines HTML Dokument in einem anderen einzubetten). Diese unsichtbare IFrame wird als Chunked Block gesendet, der implizit als unendlich lang (manchmal als "für immer Frame" bezeichnet). Wenn Ereignisse auftreten, wird der iframe schrittweise mit dem Skript Tags gefüllt, die JavaScript enthalten, das im Browser als ausgeführt wird. Da Browser HTML-Seiten inkrementell rendern, wird jedes Skript-Tag ausgeführt, wie es empfangen wird. Ein Vorteil der IFrame-Methode ist , die in jedem gängigen Browser funktioniert. Zwei Nachteile dieser Technik sind das Fehlen einer zuverlässigen Fehlerbehandlung Methode, und die Unmöglichkeit von Verfolgung des Status der Anfrage Aufrufprozess.

+0

Das ist es nicht, siehe antimatter15's Beitrag. Kein Javascript wird an den iframe angehängt, wenn der Server zum Beispiel neue E-Mail-Warnungen an den Client sendet. – molf

5

Ich bin mir ziemlich sicher, dass es nicht die Iframes sind, die für Push-Reverse-Ajax-Sachen verwendet werden. Google Mail verwendet das goog.net.BrowserChannel-System der Google Closure Library, um diese zu verarbeiten, und verwendet xhr- und activex-htmlfile-Transporte. (Siehe: http://closure-library.googlecode.com/svn/docs/class_goog_net_BrowserChannel.html)

Das ist alles, was ich sicher weiß, aber ich denke, mindestens einer der Frames wäre für die Verwaltung der Geschichte.