2010-02-21 17 views
15

Me preguntaba cuál es la ventaja de la arquitectura del lado del cliente que sigue GMail. Me refiero a la ventaja de múltiples iframes en la página; uno con diseño html y el segundo con todos los javascripts?¿Cuál es la ventaja de la arquitectura web del lado del cliente de Gmail?

¿No es más complicado ejecutar todas las operaciones DOM? (debe buscar a través de js ifram < -> arriba < -> html iframe).

¿Qué opinan los expertos?

+0

Creo que "s/How/What" – glasnt

+0

@TomatoSandwich: No hay "Cómo" en la pregunta. ¡Nada será reemplazado! (Editar: ¡Mi error! La pregunta fue editada. Por lo tanto, en su lugar le digo que es bueno para usted realizar cambios con un comando vi o similar). –

Respuesta

7

En resumen: para el rendimiento del lado del cliente.

Dado que GMail tiene una gran cantidad de Javascript (alrededor de 700 KB), lleva algo de tiempo descargar y ejecutar todo. Al usar un iframe independiente, descargar y ejecutar el Javascript no bloqueará la interfaz de usuario del navegador. Los navegadores populares ejecutarán secuencias de comandos y eventos de IU en iframes separados en paralelo. Este enfoque también le permite construir un DOM completo para la interfaz en el otro iframe mientras que los guiones todavía se están ejecutando. This article describes soluciones comunes al problema de los scripts de bloqueo.

Se necesita otro iframe para permitir que el historial del navegador funcione. Cómo funciona exactamente se puede ver en el implementation en la Biblioteca de cierre de Google.

En cuanto al impacto en la complejidad de asegurarse de que se manipule el DOM correcto: los constructores de los componentes de UI en GMail (también parte de la Biblioteca de cierres) toman todos un argumento de ayuda DOM opcional.Este ayudante está vinculado a un DOM particular, que puede estar en un marco diferente. La manipulación de diferentes DOM está completamente integrada en el diseño de estos componentes de la interfaz de usuario.

4

Es un "cuadro sin fin" utilizado para ajax inverso (el servidor envía un mensaje al cliente cuando ocurre un evento, a diferencia del ajax normal donde el cliente le pregunta algo al servidor). De wikipedia:

Una técnica básica para la aplicación web dinámica es utilizar un iframe elemento HTML oculto (un marco en línea, que permite un sitio web para incrustar un documento HTML dentro de otro). Este IFrame invisible se envía como un bloque fragmentado , que implícitamente lo declara como infinitamente largo (a veces llamado "fotograma por siempre"). A medida que ocurren los eventos, el iframe se llena gradualmente con las etiquetas script , que contienen JavaScript para ser ejecutadas en el navegador. Como los navegadores representan las páginas HTML de forma incremental, cada etiqueta de script es ejecutada a medida que se recibe.

Uno de los beneficios del método IFrame es que funciona en todos los navegadores comunes. Dos desventajas de esta técnica son la falta de un error confiable en el manejo del método , y la imposibilidad de de seguir el proceso de solicitud .

+0

Eso no es todo, mira la publicación de antimatter15. No se agrega ningún JavaScript al iframe cuando el servidor envía nuevas alertas por correo electrónico al cliente, por ejemplo. – molf

5

Estoy bastante seguro de que no se trata de los iframes que se utilizan para presionar "reverse-ajax". Gmail utiliza el sistema goog.net.BrowserChannel de la Biblioteca de cierres de Google para manejarlos, y utiliza transportes xhr y activex htmlfile. (Ver: http://closure-library.googlecode.com/svn/docs/class_goog_net_BrowserChannel.html)

Eso es todo lo que sé con certeza, pero creo que al menos uno de los marcos sería para administrar el historial.

Cuestiones relacionadas