SlideShare una empresa de Scribd logo
1 de 4
Descargar para leer sin conexión
Aplicaciones web &
JavaScript
Una aproximación a la realidad del rendimiento de las
aplicaciones web que usan JavaScript.




Marzo - 2008
Blog.zenphp.es | https://forja.rediris.es/projects/csl2-zenphp/
Juan Belón
Un tema que crea mucha confusión es la diferenciación entre dónde se ejecuta JavaScript y donde se
toman los puntos de medida de rendimiento. La dificultad tiene que ver con el hecho de que muchos
aspectos de un navegador son directamente proporcionales a otros, lo que causa que las cuestiones de
eficiencia sean intervenidas constantemente, un esquema que ayuda a comprenderlo es el siguiente:



                                           Modelos                         Rendimiento
                                           (Objetos)                       (Navegador)
                                            XMLHttpRequest


                                          Contadores (Timers)


                                               Navegador                       Renderizado

                                                   DOM


                                                    CSS




                                            Análisis
                                           Sintáctico

      Explicando las diferentes áreas una a una:

            JavaScript – Representa el núcleo del motor JavaScript. Este contiene sólo las
             primitivas básicas (funciones, objetos, vectores, expresiones regulares, etc.) para
             realizar operaciones. En si mismo no es muy útil, al menos no tanto como un
             framework javascript. Las mejoras de rendimiento dependen de la habilidad de
             cómo va afectar a todo el resto de objetos del dominio.
   Modelos Objeto – En conjunto estos son los objetos introducidos en tiempo de
       ejecución en JavaScript para dar al usuario un mayor abanico de posibilidades.
       Generalmente están implementados en C++ y son importados en el entorno de
       JavaScript (por ejemplo XPCOM es usado frecuentemente por Mozilla). Hay
       muchas comprobaciones de seguridad para prevenir a los scripts maliciosos
       acceder a estos objetos de forma involuntaria(lo que disminuye el rendimiento).
       Las mejoras de velocidad generalmente vienen en la forma de mejoras en lacapa
       de conexión o incluso eliminando dicha capa...(reemplazo).
           o XMLHttpRequest y contadores (temporizadores o timers) – Se
               implementan en C++ y se cargan en tiempo de ejecución en JavaScript. El
               rendimiento de estos elementos solo afectan indirectamente al
               rendimiento del dibujado en pantalla (renderizado).
           o Navegador – Representa objetos como 'window', 'window.location', etc.
               Las mejoras aquí también afectan al redimiento del renderizado.
           o DOM y CSS – Estas son representaciones de objetos de un sitio, HTML y
               CSS. Cuando se crea una aplicación web todo tiene que pasar a través de
               estas representaciones, sus mejoras de rendimiento,en el caso del DOM
               afectan en cómo de rápido se dibujan los cambios y como se propagan.
      Análisis Sintáctico – Este es el proceso de lectura, análisis y conversión del
       HTML,CSS,XML, etc. en sus modelos de objeto nativos. Las mejoras de velocidad
       pueden afectar los tiempos de carga de una página.
      Renderizado – Es la fase final, el dibujado de la página o cualquier subsecuencia
       de actualización. Es el cuello de botella final para el rendimiento de las
       aplicaciones interactivas.

Lo interesante de todo esto es que se pone mucha atención al rendimiento de una sóla
capa del navegador: JavaScript, sin embargo la situación real es más complicada.Para los
principiantes, mejorar el rendimiento de JavaScript tiene el potencial de mejorar mucho
el rendimiento de un sitio web, pero aún quedan cuellos de botella en el DOM, CSS, y las
capas de renderizado. Si tenemos una representación DOM lenta, entonces nos sirve de
poco tener un JavaScript muy eficiente, ya que tenemos que tener en cuenta que es el
navegador el que tiene que procesar toda la pila del navegador.

Estos son algunos consejos para que realicemos aplicaciones eficientes en equilibrio en
cada capa:

      El rendimiento de JavaScript ejecutado fuera del navegador (en una consola,o
       como el proyecto xpages) es muchísimo más rápido que dentro del navegador. La
       sobrecarga de modelos objeto y sus comprobaciones de seguridad asociadas son
       suficientes para notar la diferencia ;)
      Un código de “test” (prueba) mal escrito en JavaScript puede verse afectado por
       un cambio en el engine de dibujado. Si la prueba analiza el tiempo total de
       ejecución ,un grado accidental de sobrecarga en el motor de render puede
       introducir cambios inesperados, por lo que debemos sacar este factor y tenerlo en
       cuenta.

Hay que mejorar el procesamiento de la cola de tareas de rendimiento del navegador ;)
Un ejemplo de sobrecarga JavaScript es www.senseidav.com, puede comprobarse que la
entrada al sitio es lenta, al principio lo diseñé de forma que pudiera separar cada parte
cargada e ir mostrando y pre-procesando cada división de la capa de renderizado para
agilizar el cuello de botella, pero al ir avanzando la aplicación dichas divisiones se hicieron
dependientes unas de otras con lo que no es posible cargarlas por separado por lo que
mientras se cargan en segundo plano, en primer plano se muestra una capa de
presentación con una animación de precarga de AJAX y al obtenerse todas las demás, se
van mostrando; primero añadí animaciones para dicha tarea,…pero el rendimiento era
muy bajo para algunos tipos de animaciones y como no me convencia el resultado decidí
eliminar dichas animaciones de presentación, para dejar la web como está ahora…aún asi,
parece que el usuario, por norma general no suele esperar más de 2 minutos la carga de
la web, teniendo en cuenta que su conexión es ADSL y no está muy colapsada (¿uso de
programas de redes p2p y otros?) por lo que generalmente tiene unas 20 visitas al día de
las cuales un 85% son nuevas y permancen no más de 5 minutos en la misma página
aunque no he logrado comprobar si es por cambiar de página o al realizar una llamada
AJAX el detector de presencia de google analytics no llega a funcionar…

Más contenido relacionado

La actualidad más candente

Nuevas características para Desarrollo Web en Visual Studio 2012 y ASP.NET MVC 4
Nuevas características para Desarrollo Web en Visual Studio 2012 y ASP.NET MVC 4Nuevas características para Desarrollo Web en Visual Studio 2012 y ASP.NET MVC 4
Nuevas características para Desarrollo Web en Visual Studio 2012 y ASP.NET MVC 4Rodolfo Finochietti
 
Manual Tutorial Javascript Con Ejemplos
Manual Tutorial Javascript Con EjemplosManual Tutorial Javascript Con Ejemplos
Manual Tutorial Javascript Con EjemplosSteven Gomez
 
Dragome en JavaConf Buenos Aires 2014
Dragome en JavaConf Buenos Aires 2014 Dragome en JavaConf Buenos Aires 2014
Dragome en JavaConf Buenos Aires 2014 Fernando Petrola
 
RESUMEN DE JAVASCRIPT
RESUMEN DE JAVASCRIPTRESUMEN DE JAVASCRIPT
RESUMEN DE JAVASCRIPTAlejito Laaz
 
Presentacion Ruby on Rails en Universidad Autónoma 2009
Presentacion Ruby on Rails en Universidad Autónoma 2009Presentacion Ruby on Rails en Universidad Autónoma 2009
Presentacion Ruby on Rails en Universidad Autónoma 2009Nelson Rojas Núñez
 
Qué es jsp
Qué es jspQué es jsp
Qué es jspElim Aqp
 
Jsp(java server pages)
Jsp(java server pages)Jsp(java server pages)
Jsp(java server pages)diegob1098
 
Buenas Prácticas de desarrollo en Ruby on Rails
Buenas Prácticas de desarrollo en Ruby on RailsBuenas Prácticas de desarrollo en Ruby on Rails
Buenas Prácticas de desarrollo en Ruby on RailsSergio Gil
 
Introducción al desarrollo web moderno
Introducción al desarrollo web modernoIntroducción al desarrollo web moderno
Introducción al desarrollo web modernoSebastián Rocco
 
Encuentro GeneXus 2003 Migracion Win Web
Encuentro GeneXus 2003 Migracion Win WebEncuentro GeneXus 2003 Migracion Win Web
Encuentro GeneXus 2003 Migracion Win WebEnrique Almeida
 
Desarrollo modermo de aplicaciones web
Desarrollo modermo de aplicaciones webDesarrollo modermo de aplicaciones web
Desarrollo modermo de aplicaciones webRoberto Sanz Ciriano
 
Javascript para principiantes -Introducción
Javascript para principiantes -IntroducciónJavascript para principiantes -Introducción
Javascript para principiantes -IntroducciónOscar Josué Uh Pérez
 

La actualidad más candente (20)

Introducción a Ruby on rails
Introducción a Ruby on railsIntroducción a Ruby on rails
Introducción a Ruby on rails
 
JSP
JSP JSP
JSP
 
Nuevas características para Desarrollo Web en Visual Studio 2012 y ASP.NET MVC 4
Nuevas características para Desarrollo Web en Visual Studio 2012 y ASP.NET MVC 4Nuevas características para Desarrollo Web en Visual Studio 2012 y ASP.NET MVC 4
Nuevas características para Desarrollo Web en Visual Studio 2012 y ASP.NET MVC 4
 
Manual Tutorial Javascript Con Ejemplos
Manual Tutorial Javascript Con EjemplosManual Tutorial Javascript Con Ejemplos
Manual Tutorial Javascript Con Ejemplos
 
Dragome en JavaConf Buenos Aires 2014
Dragome en JavaConf Buenos Aires 2014 Dragome en JavaConf Buenos Aires 2014
Dragome en JavaConf Buenos Aires 2014
 
RESUMEN DE JAVASCRIPT
RESUMEN DE JAVASCRIPTRESUMEN DE JAVASCRIPT
RESUMEN DE JAVASCRIPT
 
Presentacion Ruby on Rails en Universidad Autónoma 2009
Presentacion Ruby on Rails en Universidad Autónoma 2009Presentacion Ruby on Rails en Universidad Autónoma 2009
Presentacion Ruby on Rails en Universidad Autónoma 2009
 
Qué es jsp
Qué es jspQué es jsp
Qué es jsp
 
Jsp(java server pages)
Jsp(java server pages)Jsp(java server pages)
Jsp(java server pages)
 
Buenas Prácticas de desarrollo en Ruby on Rails
Buenas Prácticas de desarrollo en Ruby on RailsBuenas Prácticas de desarrollo en Ruby on Rails
Buenas Prácticas de desarrollo en Ruby on Rails
 
Introducción al desarrollo web moderno
Introducción al desarrollo web modernoIntroducción al desarrollo web moderno
Introducción al desarrollo web moderno
 
Java script
Java scriptJava script
Java script
 
Encuentro GeneXus 2003 Migracion Win Web
Encuentro GeneXus 2003 Migracion Win WebEncuentro GeneXus 2003 Migracion Win Web
Encuentro GeneXus 2003 Migracion Win Web
 
Desarrollo modermo de aplicaciones web
Desarrollo modermo de aplicaciones webDesarrollo modermo de aplicaciones web
Desarrollo modermo de aplicaciones web
 
Javascript para principiantes -Introducción
Javascript para principiantes -IntroducciónJavascript para principiantes -Introducción
Javascript para principiantes -Introducción
 
javascript
javascriptjavascript
javascript
 
JSP
JSPJSP
JSP
 
Introduccion java ser
Introduccion java serIntroduccion java ser
Introduccion java ser
 
Java script
Java scriptJava script
Java script
 
Uts Lenguaje Ajax
Uts Lenguaje AjaxUts Lenguaje Ajax
Uts Lenguaje Ajax
 

Destacado

Creacuento candela
Creacuento candelaCreacuento candela
Creacuento candelaSoniaVargas1
 
Introduccion A Las Redes
Introduccion A Las RedesIntroduccion A Las Redes
Introduccion A Las RedesKlinton
 
Aplicaciones y juegos para móbiles 2011: iOS, Android, Bada, Palm
Aplicaciones y juegos para móbiles 2011: iOS, Android, Bada, PalmAplicaciones y juegos para móbiles 2011: iOS, Android, Bada, Palm
Aplicaciones y juegos para móbiles 2011: iOS, Android, Bada, PalmJuan Belón Pérez
 
The Outcome Economy
The Outcome EconomyThe Outcome Economy
The Outcome EconomyHelge Tennø
 

Destacado (9)

Desistema
DesistemaDesistema
Desistema
 
32773 php-basico
32773 php-basico32773 php-basico
32773 php-basico
 
Young People In Turkey
Young People In TurkeyYoung People In Turkey
Young People In Turkey
 
Samsung ps43 e490
Samsung ps43 e490Samsung ps43 e490
Samsung ps43 e490
 
Protocolos de red
Protocolos de redProtocolos de red
Protocolos de red
 
Creacuento candela
Creacuento candelaCreacuento candela
Creacuento candela
 
Introduccion A Las Redes
Introduccion A Las RedesIntroduccion A Las Redes
Introduccion A Las Redes
 
Aplicaciones y juegos para móbiles 2011: iOS, Android, Bada, Palm
Aplicaciones y juegos para móbiles 2011: iOS, Android, Bada, PalmAplicaciones y juegos para móbiles 2011: iOS, Android, Bada, Palm
Aplicaciones y juegos para móbiles 2011: iOS, Android, Bada, Palm
 
The Outcome Economy
The Outcome EconomyThe Outcome Economy
The Outcome Economy
 

Similar a JavaScript, DOM y rendimiento web

Programación Reactiva, Javascript Isomorfo y Meteorjs !
Programación Reactiva, Javascript Isomorfo y Meteorjs !Programación Reactiva, Javascript Isomorfo y Meteorjs !
Programación Reactiva, Javascript Isomorfo y Meteorjs !ouuyeah
 
Aprendiendo a Programas en 4 horas JavaScript
Aprendiendo a Programas en 4 horas JavaScriptAprendiendo a Programas en 4 horas JavaScript
Aprendiendo a Programas en 4 horas JavaScriptKarsarmi
 
Jsf Java Server Faces
Jsf   Java Server FacesJsf   Java Server Faces
Jsf Java Server Facescok12v
 
Microsoft Expression Web
Microsoft Expression WebMicrosoft Expression Web
Microsoft Expression Webdaniel ridan
 
Cross development - React para desarrolladores de asp.net
Cross development - React para desarrolladores de asp.netCross development - React para desarrolladores de asp.net
Cross development - React para desarrolladores de asp.netAlberto Diaz Martin
 
CrossDvlpu - REACT para desarrolladores de ASP.NET
CrossDvlpu - REACT para desarrolladores de ASP.NETCrossDvlpu - REACT para desarrolladores de ASP.NET
CrossDvlpu - REACT para desarrolladores de ASP.NETAlberto Diaz Martin
 
Programación del lado del cliente
Programación del lado del clienteProgramación del lado del cliente
Programación del lado del clienteGabriel Mondragón
 
Gwt seminario java_hispano_manolocarrasco
Gwt seminario java_hispano_manolocarrascoGwt seminario java_hispano_manolocarrasco
Gwt seminario java_hispano_manolocarrascoManuel Carrasco Moñino
 
Manual programacion - java - jsp & xml
Manual   programacion - java - jsp & xmlManual   programacion - java - jsp & xml
Manual programacion - java - jsp & xmlgilhorak
 
01 Ext Js Introduccion
01 Ext Js   Introduccion01 Ext Js   Introduccion
01 Ext Js IntroduccionMayer Horna
 
Web20
Web20Web20
Web20UJAP
 
Jc Web20 Open Source Why Floss2007
Jc Web20 Open Source Why Floss2007Jc Web20 Open Source Why Floss2007
Jc Web20 Open Source Why Floss2007guest976d083
 

Similar a JavaScript, DOM y rendimiento web (20)

Programación Reactiva, Javascript Isomorfo y Meteorjs !
Programación Reactiva, Javascript Isomorfo y Meteorjs !Programación Reactiva, Javascript Isomorfo y Meteorjs !
Programación Reactiva, Javascript Isomorfo y Meteorjs !
 
Aprendiendo GWT
Aprendiendo GWTAprendiendo GWT
Aprendiendo GWT
 
Aprendiendo a Programas en 4 horas JavaScript
Aprendiendo a Programas en 4 horas JavaScriptAprendiendo a Programas en 4 horas JavaScript
Aprendiendo a Programas en 4 horas JavaScript
 
Jsf Java Server Faces
Jsf   Java Server FacesJsf   Java Server Faces
Jsf Java Server Faces
 
Microsoft Expression Web
Microsoft Expression WebMicrosoft Expression Web
Microsoft Expression Web
 
Cross development - React para desarrolladores de asp.net
Cross development - React para desarrolladores de asp.netCross development - React para desarrolladores de asp.net
Cross development - React para desarrolladores de asp.net
 
CrossDvlpu - REACT para desarrolladores de ASP.NET
CrossDvlpu - REACT para desarrolladores de ASP.NETCrossDvlpu - REACT para desarrolladores de ASP.NET
CrossDvlpu - REACT para desarrolladores de ASP.NET
 
Clase 4 JavaScript Básico
Clase 4 JavaScript BásicoClase 4 JavaScript Básico
Clase 4 JavaScript Básico
 
Gwt I - entendiendo gwt
Gwt I - entendiendo gwtGwt I - entendiendo gwt
Gwt I - entendiendo gwt
 
Libro introducción a ajax
Libro introducción a ajaxLibro introducción a ajax
Libro introducción a ajax
 
Programación del lado del cliente
Programación del lado del clienteProgramación del lado del cliente
Programación del lado del cliente
 
React VS angular
React VS angularReact VS angular
React VS angular
 
Gwt seminario java_hispano_manolocarrasco
Gwt seminario java_hispano_manolocarrascoGwt seminario java_hispano_manolocarrasco
Gwt seminario java_hispano_manolocarrasco
 
Manual programacion - java - jsp & xml
Manual   programacion - java - jsp & xmlManual   programacion - java - jsp & xml
Manual programacion - java - jsp & xml
 
Javascript basico
Javascript basicoJavascript basico
Javascript basico
 
01 Ext Js Introduccion
01 Ext Js   Introduccion01 Ext Js   Introduccion
01 Ext Js Introduccion
 
Web20
Web20Web20
Web20
 
Java Web - Introduccion
Java Web - IntroduccionJava Web - Introduccion
Java Web - Introduccion
 
Jc Web20 Open Source Why Floss2007
Jc Web20 Open Source Why Floss2007Jc Web20 Open Source Why Floss2007
Jc Web20 Open Source Why Floss2007
 
Renderizando la web del 2020
Renderizando la web del 2020Renderizando la web del 2020
Renderizando la web del 2020
 

Más de Juan Belón Pérez

Yahoo! pipes + Wordpress plugin - RSS POWER to your blog
Yahoo! pipes + Wordpress plugin - RSS POWER to your blogYahoo! pipes + Wordpress plugin - RSS POWER to your blog
Yahoo! pipes + Wordpress plugin - RSS POWER to your blogJuan Belón Pérez
 
Proyecto Campos Electricos - Programador Servicios 3d
Proyecto Campos Electricos - Programador Servicios 3dProyecto Campos Electricos - Programador Servicios 3d
Proyecto Campos Electricos - Programador Servicios 3dJuan Belón Pérez
 
Aecem - Libro Blanco - Para Programador Php.org
Aecem - Libro Blanco  - Para Programador Php.orgAecem - Libro Blanco  - Para Programador Php.org
Aecem - Libro Blanco - Para Programador Php.orgJuan Belón Pérez
 
Introducción a PHP - Programador PHP - UGR
Introducción a PHP - Programador PHP - UGRIntroducción a PHP - Programador PHP - UGR
Introducción a PHP - Programador PHP - UGRJuan Belón Pérez
 
Composicion de servicios web, un ejemplo
Composicion de servicios web, un ejemploComposicion de servicios web, un ejemplo
Composicion de servicios web, un ejemploJuan Belón Pérez
 
Memoria Zenphp - Programador PHP
Memoria Zenphp - Programador PHPMemoria Zenphp - Programador PHP
Memoria Zenphp - Programador PHPJuan Belón Pérez
 
Depurando Java Script - Programador PHP
Depurando Java Script - Programador PHPDepurando Java Script - Programador PHP
Depurando Java Script - Programador PHPJuan Belón Pérez
 
Zenphp - Presentación de Septiembre en la Etsiit - Programador PHP
Zenphp - Presentación de Septiembre en la Etsiit - Programador PHPZenphp - Presentación de Septiembre en la Etsiit - Programador PHP
Zenphp - Presentación de Septiembre en la Etsiit - Programador PHPJuan Belón Pérez
 
Tutorial A Z A - Programador PHP
Tutorial A Z A - Programador PHPTutorial A Z A - Programador PHP
Tutorial A Z A - Programador PHPJuan Belón Pérez
 
Ensayo Cientifico - Programador PHP
Ensayo Cientifico - Programador PHPEnsayo Cientifico - Programador PHP
Ensayo Cientifico - Programador PHPJuan Belón Pérez
 
Zen Scaffolding - Programador PHP
Zen Scaffolding - Programador PHPZen Scaffolding - Programador PHP
Zen Scaffolding - Programador PHPJuan Belón Pérez
 
Bibliografia Y Menciones - Programador PHP
Bibliografia Y Menciones - Programador PHPBibliografia Y Menciones - Programador PHP
Bibliografia Y Menciones - Programador PHPJuan Belón Pérez
 
Tutorial MVC - Zenphp - Programador PHP
Tutorial MVC - Zenphp - Programador PHPTutorial MVC - Zenphp - Programador PHP
Tutorial MVC - Zenphp - Programador PHPJuan Belón Pérez
 

Más de Juan Belón Pérez (20)

¿Cómo elegir servidor web?
¿Cómo elegir servidor web?¿Cómo elegir servidor web?
¿Cómo elegir servidor web?
 
Yahoo! pipes + Wordpress plugin - RSS POWER to your blog
Yahoo! pipes + Wordpress plugin - RSS POWER to your blogYahoo! pipes + Wordpress plugin - RSS POWER to your blog
Yahoo! pipes + Wordpress plugin - RSS POWER to your blog
 
Proyecto Campos Electricos - Programador Servicios 3d
Proyecto Campos Electricos - Programador Servicios 3dProyecto Campos Electricos - Programador Servicios 3d
Proyecto Campos Electricos - Programador Servicios 3d
 
Aecem - Libro Blanco - Para Programador Php.org
Aecem - Libro Blanco  - Para Programador Php.orgAecem - Libro Blanco  - Para Programador Php.org
Aecem - Libro Blanco - Para Programador Php.org
 
Bpel y Open Esb
Bpel y Open EsbBpel y Open Esb
Bpel y Open Esb
 
Introducción a PHP - Programador PHP - UGR
Introducción a PHP - Programador PHP - UGRIntroducción a PHP - Programador PHP - UGR
Introducción a PHP - Programador PHP - UGR
 
Composicion de servicios web, un ejemplo
Composicion de servicios web, un ejemploComposicion de servicios web, un ejemplo
Composicion de servicios web, un ejemplo
 
Presentación: xUnit y Junit
Presentación: xUnit y JunitPresentación: xUnit y Junit
Presentación: xUnit y Junit
 
Cómo elegir un servidor Web
Cómo elegir un servidor WebCómo elegir un servidor Web
Cómo elegir un servidor Web
 
Memoria Zenphp - Programador PHP
Memoria Zenphp - Programador PHPMemoria Zenphp - Programador PHP
Memoria Zenphp - Programador PHP
 
Depurando Java Script - Programador PHP
Depurando Java Script - Programador PHPDepurando Java Script - Programador PHP
Depurando Java Script - Programador PHP
 
Zenphp - Presentación de Septiembre en la Etsiit - Programador PHP
Zenphp - Presentación de Septiembre en la Etsiit - Programador PHPZenphp - Presentación de Septiembre en la Etsiit - Programador PHP
Zenphp - Presentación de Septiembre en la Etsiit - Programador PHP
 
Zenphp - Programador PHP
Zenphp - Programador PHPZenphp - Programador PHP
Zenphp - Programador PHP
 
Tutorial A Z A - Programador PHP
Tutorial A Z A - Programador PHPTutorial A Z A - Programador PHP
Tutorial A Z A - Programador PHP
 
Ensayo Cientifico - Programador PHP
Ensayo Cientifico - Programador PHPEnsayo Cientifico - Programador PHP
Ensayo Cientifico - Programador PHP
 
Zen AJAX - Programador PHP
Zen AJAX - Programador PHPZen AJAX - Programador PHP
Zen AJAX - Programador PHP
 
Zen Scaffolding - Programador PHP
Zen Scaffolding - Programador PHPZen Scaffolding - Programador PHP
Zen Scaffolding - Programador PHP
 
Bibliografia Y Menciones - Programador PHP
Bibliografia Y Menciones - Programador PHPBibliografia Y Menciones - Programador PHP
Bibliografia Y Menciones - Programador PHP
 
Tutorial MVC - Zenphp - Programador PHP
Tutorial MVC - Zenphp - Programador PHPTutorial MVC - Zenphp - Programador PHP
Tutorial MVC - Zenphp - Programador PHP
 
M V C - Programador PHP
M V C - Programador PHPM V C - Programador PHP
M V C - Programador PHP
 

Último

POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...silviayucra2
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfsoporteupcology
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx241521559
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricKeyla Dolores Méndez
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesFundación YOD YOD
 
Herramientas de corte de alta velocidad.pptx
Herramientas de corte de alta velocidad.pptxHerramientas de corte de alta velocidad.pptx
Herramientas de corte de alta velocidad.pptxRogerPrieto3
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdfIsabellaMontaomurill
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIAWilbisVega
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITMaricarmen Sánchez Ruiz
 
9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudianteAndreaHuertas24
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxLolaBunny11
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)GDGSucre
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveFagnerLisboa3
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan JosephBRAYANJOSEPHPEREZGOM
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíassuserf18419
 

Último (15)

POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdf
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento Protégeles
 
Herramientas de corte de alta velocidad.pptx
Herramientas de corte de alta velocidad.pptxHerramientas de corte de alta velocidad.pptx
Herramientas de corte de alta velocidad.pptx
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdf
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptx
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnología
 

JavaScript, DOM y rendimiento web

  • 1. Aplicaciones web & JavaScript Una aproximación a la realidad del rendimiento de las aplicaciones web que usan JavaScript. Marzo - 2008 Blog.zenphp.es | https://forja.rediris.es/projects/csl2-zenphp/ Juan Belón
  • 2. Un tema que crea mucha confusión es la diferenciación entre dónde se ejecuta JavaScript y donde se toman los puntos de medida de rendimiento. La dificultad tiene que ver con el hecho de que muchos aspectos de un navegador son directamente proporcionales a otros, lo que causa que las cuestiones de eficiencia sean intervenidas constantemente, un esquema que ayuda a comprenderlo es el siguiente: Modelos Rendimiento (Objetos) (Navegador) XMLHttpRequest Contadores (Timers) Navegador Renderizado DOM CSS Análisis Sintáctico Explicando las diferentes áreas una a una:  JavaScript – Representa el núcleo del motor JavaScript. Este contiene sólo las primitivas básicas (funciones, objetos, vectores, expresiones regulares, etc.) para realizar operaciones. En si mismo no es muy útil, al menos no tanto como un framework javascript. Las mejoras de rendimiento dependen de la habilidad de cómo va afectar a todo el resto de objetos del dominio.
  • 3. Modelos Objeto – En conjunto estos son los objetos introducidos en tiempo de ejecución en JavaScript para dar al usuario un mayor abanico de posibilidades. Generalmente están implementados en C++ y son importados en el entorno de JavaScript (por ejemplo XPCOM es usado frecuentemente por Mozilla). Hay muchas comprobaciones de seguridad para prevenir a los scripts maliciosos acceder a estos objetos de forma involuntaria(lo que disminuye el rendimiento). Las mejoras de velocidad generalmente vienen en la forma de mejoras en lacapa de conexión o incluso eliminando dicha capa...(reemplazo). o XMLHttpRequest y contadores (temporizadores o timers) – Se implementan en C++ y se cargan en tiempo de ejecución en JavaScript. El rendimiento de estos elementos solo afectan indirectamente al rendimiento del dibujado en pantalla (renderizado). o Navegador – Representa objetos como 'window', 'window.location', etc. Las mejoras aquí también afectan al redimiento del renderizado. o DOM y CSS – Estas son representaciones de objetos de un sitio, HTML y CSS. Cuando se crea una aplicación web todo tiene que pasar a través de estas representaciones, sus mejoras de rendimiento,en el caso del DOM afectan en cómo de rápido se dibujan los cambios y como se propagan.  Análisis Sintáctico – Este es el proceso de lectura, análisis y conversión del HTML,CSS,XML, etc. en sus modelos de objeto nativos. Las mejoras de velocidad pueden afectar los tiempos de carga de una página.  Renderizado – Es la fase final, el dibujado de la página o cualquier subsecuencia de actualización. Es el cuello de botella final para el rendimiento de las aplicaciones interactivas. Lo interesante de todo esto es que se pone mucha atención al rendimiento de una sóla capa del navegador: JavaScript, sin embargo la situación real es más complicada.Para los principiantes, mejorar el rendimiento de JavaScript tiene el potencial de mejorar mucho el rendimiento de un sitio web, pero aún quedan cuellos de botella en el DOM, CSS, y las capas de renderizado. Si tenemos una representación DOM lenta, entonces nos sirve de poco tener un JavaScript muy eficiente, ya que tenemos que tener en cuenta que es el navegador el que tiene que procesar toda la pila del navegador. Estos son algunos consejos para que realicemos aplicaciones eficientes en equilibrio en cada capa:  El rendimiento de JavaScript ejecutado fuera del navegador (en una consola,o como el proyecto xpages) es muchísimo más rápido que dentro del navegador. La sobrecarga de modelos objeto y sus comprobaciones de seguridad asociadas son suficientes para notar la diferencia ;)  Un código de “test” (prueba) mal escrito en JavaScript puede verse afectado por un cambio en el engine de dibujado. Si la prueba analiza el tiempo total de ejecución ,un grado accidental de sobrecarga en el motor de render puede introducir cambios inesperados, por lo que debemos sacar este factor y tenerlo en cuenta. Hay que mejorar el procesamiento de la cola de tareas de rendimiento del navegador ;)
  • 4. Un ejemplo de sobrecarga JavaScript es www.senseidav.com, puede comprobarse que la entrada al sitio es lenta, al principio lo diseñé de forma que pudiera separar cada parte cargada e ir mostrando y pre-procesando cada división de la capa de renderizado para agilizar el cuello de botella, pero al ir avanzando la aplicación dichas divisiones se hicieron dependientes unas de otras con lo que no es posible cargarlas por separado por lo que mientras se cargan en segundo plano, en primer plano se muestra una capa de presentación con una animación de precarga de AJAX y al obtenerse todas las demás, se van mostrando; primero añadí animaciones para dicha tarea,…pero el rendimiento era muy bajo para algunos tipos de animaciones y como no me convencia el resultado decidí eliminar dichas animaciones de presentación, para dejar la web como está ahora…aún asi, parece que el usuario, por norma general no suele esperar más de 2 minutos la carga de la web, teniendo en cuenta que su conexión es ADSL y no está muy colapsada (¿uso de programas de redes p2p y otros?) por lo que generalmente tiene unas 20 visitas al día de las cuales un 85% son nuevas y permancen no más de 5 minutos en la misma página aunque no he logrado comprobar si es por cambiar de página o al realizar una llamada AJAX el detector de presencia de google analytics no llega a funcionar…