SlideShare una empresa de Scribd logo
1 de 55
Front Performance
Ana Encinar
Madrid | November 30 - December 1, 2018
Ana Encinar @jnisabe
Ana Encinar
Fullstack developer en
@jnisabe
Ana Encinar @jnisabe
LA WEB
Evolución
× Hypertext document (http 0.9)
× Web page (http 1.0 y 1.1)
× Web application
Ana Encinar @jnisabe
Arquitectura del navegador
DOM, CSSOM y JavaScript
Ana Encinar @jnisabe
6 conceptos básicos
Ana Encinar @jnisabe
6 conceptos básicos
1. Tener en cuenta la performance
2. Asegurar la performance
3. Tamaño de los ficheros
4. La performance en JavaScript
5. Gestión de memoria
6. Gestión de recursos del navegador
Ana Encinar @jnisabe
Tener en cuenta la performance
Ana Encinar @jnisabe
Tener en cuenta la performance
¿Por qué es importante la performance?
× No más 2-3 segundos
Ana Encinar @jnisabe
Tener en cuenta la performance
¿Por qué es importante la performance?
× No más 2-3 segundos
× Un problema de rendimiento, es un problema de usabilidad
Ana Encinar @jnisabe
Ana Encinar @jnisabe
Asegurar la performance básica
Ana Encinar @jnisabe
Asegurar la performance básica
A qué llamamos performance básica
× La carga de las hojas estilos al principio del código HTML
× Carga del javascript al final del código HTML
× No bloquear los archivos. async / defer
× Optimización de elementos multimedia
× Imágenes vectoriales
× No base64
× Carga en diferido / lazy load
Ana Encinar @jnisabe
Asegurar la performance básica
Optimización de elementos multimedia
× Carga en diferido / lazy load - Data-src
Ana Encinar @jnisabe
Asegurar la performance básica
Optimización de elementos multimedia
× Carga en diferido / lazy load - Data-src
× jQuery plugin
Ana Encinar @jnisabe
Tamaño de los ficheros
Ana Encinar @jnisabe
Minificación js (task runner)
Tamaño de los ficheros
Ana Encinar @jnisabe
Performance en javascript
Ana Encinar @jnisabe
Performance en javascript
V8 performance
Ana Encinar @jnisabe
Performance en javascript
v8/spidermonkey performance
Abstract syntax tree
Ana Encinar @jnisabe
Performance en javascript
V8 performance
Ana Encinar @jnisabe
× Reflows
Performance en javascript
Ana Encinar @jnisabe
× Reflows
× ¿Cuantos eventos tengo en la vista?
× Usabilidad y procesamiento
Performance en javascript
Ana Encinar @jnisabe
Performance en javascript
Ana Encinar @jnisabe
× Reflows
× ¿Cuantos eventos tengo en la vista?
× Usabilidad y procesamiento
× Framework vs nativo
Performance en javascript
Ana Encinar @jnisabe
La optimización de netflix
× ¿Por qué Netflix cambia?
× Muchas conexiones desde móviles
× Conexiones de red lentas
× ¿Qué mejoró?
× Reduce el tiempo de carga un 50%
× Reduce el tamaño fichero js en cliente a menos de 200kb
Performance en javascript
Ana Encinar @jnisabe
La optimización de netflix
Performance en javascript
Ana Encinar @jnisabe
¿Mejor o peor?
Performance en javascript
Ana Encinar @jnisabe
¿Qué tipo de programación usar?
Performance en javascript
Programación imperativa
Programación funcional
http://jsben.ch/
Ana Encinar @jnisabe
Polyfill Array.prototype.find
Performance en javascript https://www.ecma-international.org/ecma-
262/6.0/#sec-array.prototype.find
Ana Encinar @jnisabe
Bucles
× Coste de O(N)
× El coste se hace mayor en operaciones
grandes
× Fácil de depurar
Recursividad
× Un if tiene coste equivalente O(1)
× Un algoritmo recursivo O(T(S1;S2))
× Muy útil en estructuras con forma de
árbol. El DOM tiene estructura de árbol
× No es fácil de depurar
Performance en javascript
Bucles vs recursividad
Ana Encinar @jnisabe
if
× El coste se hace mayor en operaciones
grandes
switch
× En casos de muchas comprobaciones, se
vuelve óptimo.
Performance en javascript
if vs switch
Ana Encinar @jnisabe
Performance en javascript
condicionales; bloque, optimización prematura, ternarias…
Ana Encinar @jnisabe
Las librerías y proyectos ajenos
NO siempre te salvan la vida.
NO te engañes
Ana Encinar @jnisabe
Descarga el hilo principal de
funcionalidad, y aprovecha los
workers
Ana Encinar @jnisabe
× Web worker
× No tiene acceso al DOM
× Sirve para descargar lógica
del hilo principal
× Workers Service
× Permite gestionar solicitudes
de red
× Push
× Background sync
× https
Performance en javascript
Workers Service vs web workers
Ana Encinar @jnisabe
Ana Encinar @jnisabe
Ana Encinar @jnisabe
Gestión de memoria
Ana Encinar @jnisabe
Algoritmo de referencias
Algoritmo de barrido
Gestión de memoria
Ana Encinar @jnisabe
Herramientas para detectarlo
Heap Profiles en Chrome
Jshint
Jslint
Gestión de memoria/Recolector de basura
Ana Encinar @jnisabe
Ana Encinar @jnisabe
Ana Encinar @jnisabe
Gestión de recursos del
navegador
Ana Encinar @jnisabe
HTTP1
Una conexión, 1 petición
× Cuello de botella
Mayor trafico de red, no hay priorización.
HTTP2
Peticiones en paralelo
× Multiplexación
IE: límite 2 peticiones en paralelo
Chrome, Firefox: 6 peticiones en paralelo (
versiones antiguas). 16 peticiones (últim.
Versiones)
Gestión de recursos del navegador
Ana Encinar @jnisabe
HTTP2; optimizaciones
Priorización
× Preload
× Prefetch
Server push
× Servidor SPDY (Firefox, Opera y Chrome)
× Push de servidor no de aplicación
× Gasto de recursos innecesario
Gestión de recursos del navegador
Ana Encinar @jnisabe
HTTP2; optimizaciones
server push– pros y contras
PROS
× Tiempo de obtención de recurso menor
CONTRAS
× Si el cliente ya tiene los recursos en
caché, la carga es un desperdicio
× La aplicación debe decidir si debe
empujar el recurso, no puede saber si el
cliente tiene el recurso
Gestión de recursos del navegador
Ana Encinar @jnisabe
Ejemplo server push
Gestión de recursos del navegador
Ana Encinar @jnisabe
Lighthouse – web test tool
Herramientas para testear
Ana Encinar @jnisabe
Resumen
Ana Encinar @jnisabe
• Carga de página en 2-3 segundos para no perder usuarios
• Ficheros minificados tanto css y javascript como el html
• Tener en mente el Abstract syntax tree de nuestro código
• v8 vs spiderMonkey
• Reflows
• Delegación de eventos. Debounce necesarios
• Estudiar el contexto en el que se usa un framework
• Uso de workers
• Cuidar la memoria en el navegador
• Mejoras de http2
• Cuidado con el número de request en paralelo
Links
× Workers
× https://www.loxodrome.io/post/web-worker-performance/
× https://github.com/runspired/webworker-performance
× Testing tools
× https://progressivetooling.com/
× Documentación Chrome dev tools
× https://developers.google.com/web/tools/chrome-devtools/evaluate-performance/
× https://developers.google.com/web/tools/chrome-devtools/speed/get-started
× https://developers.google.com/web/tools/chrome-devtools/memory-problems/heap-
snapshots
× https://developers.google.com/web/tools/chrome-devtools/memory-problems/allocation-
profiler
× https://developers.google.com/web/tools/chrome-devtools/memory-problems/
× https://developers.google.com/web/tools/puppeteer/#next-steps
× https://developers.google.com/web/fundamentals/performance/rail
Gracias!
Ana Encinar @jnisabe
¡Buscamos gente!
Maquetador web
Less,sass, html, css3…
Backend developer
Java, spring framework, AWS, elasticsearch,
microservicios…
DevOps Engineer
Prometheus, Terraform, Vagrant/Docker,
SonarQube
Ana Encinar @jnisabe
Encuentra las ofertas en nuestro
linkedin o
idealista.com/empleo/ofertas
:-)
¿Preguntas?
Ana Encinar @jnisabe
Ana Encinar @jnisabe

Más contenido relacionado

Similar a Front Performance

Optimiza tus webs a bajo costo - WCVenezuela2021
Optimiza tus webs a bajo costo - WCVenezuela2021Optimiza tus webs a bajo costo - WCVenezuela2021
Optimiza tus webs a bajo costo - WCVenezuela2021Fernando Puente
 
Sitios web de alto rendimiento y alta disponibilidad
Sitios web de alto rendimiento y alta disponibilidadSitios web de alto rendimiento y alta disponibilidad
Sitios web de alto rendimiento y alta disponibilidadIván Campaña Naranjo
 
Charla betabeers optimización y rendimiento en Wordpress - Marcos Ramajo
Charla betabeers optimización y rendimiento en Wordpress - Marcos RamajoCharla betabeers optimización y rendimiento en Wordpress - Marcos Ramajo
Charla betabeers optimización y rendimiento en Wordpress - Marcos RamajoMarcos Ramajo
 
5. Diego Ferreiro. Software Architect
5. Diego Ferreiro. Software Architect5. Diego Ferreiro. Software Architect
5. Diego Ferreiro. Software ArchitectNetLab
 
Si tu aplicación no responde rápido pierdes clientes
Si tu aplicación no responde rápido pierdes clientesSi tu aplicación no responde rápido pierdes clientes
Si tu aplicación no responde rápido pierdes clientesJesús Franco
 
Mejorar WPO en WordPress
Mejorar WPO en WordPressMejorar WPO en WordPress
Mejorar WPO en WordPressAntonio Torres
 
Antonio Torres - WPO Wordpress - EN@E Digital Meeting
Antonio Torres - WPO Wordpress - EN@E Digital MeetingAntonio Torres - WPO Wordpress - EN@E Digital Meeting
Antonio Torres - WPO Wordpress - EN@E Digital MeetingENAE Business School
 
Presentación Rodrigo Valdes de Petris- eCommerce Day Santiago 2015
Presentación Rodrigo Valdes de Petris- eCommerce Day Santiago 2015 Presentación Rodrigo Valdes de Petris- eCommerce Day Santiago 2015
Presentación Rodrigo Valdes de Petris- eCommerce Day Santiago 2015 eCommerce Institute
 
Remodelación del sitio Web de Canaima GNU/Linux
Remodelación del sitio Web de Canaima GNU/LinuxRemodelación del sitio Web de Canaima GNU/Linux
Remodelación del sitio Web de Canaima GNU/LinuxLeonardo J. Caballero G.
 
Hacking Web Performance en Español - JSConf México 2020
Hacking Web Performance en Español - JSConf México 2020Hacking Web Performance en Español - JSConf México 2020
Hacking Web Performance en Español - JSConf México 2020Maximiliano Firtman
 
Caso de estudio - Optimizacion en magento
Caso de estudio - Optimizacion en magentoCaso de estudio - Optimizacion en magento
Caso de estudio - Optimizacion en magentoSugerendo
 
C:\fakepath\optimizacion
C:\fakepath\optimizacionC:\fakepath\optimizacion
C:\fakepath\optimizacionGonzalo C.
 
Optimiza tus webs Grails. Greach 2011
Optimiza tus webs Grails. Greach 2011Optimiza tus webs Grails. Greach 2011
Optimiza tus webs Grails. Greach 2011Dani Latorre
 
Optimización de aplicaciones web con base de datos NoSQL In-Memory
Optimización de aplicaciones web con base de datos NoSQL In-MemoryOptimización de aplicaciones web con base de datos NoSQL In-Memory
Optimización de aplicaciones web con base de datos NoSQL In-MemoryGonzalo Chacaltana
 
HTML Tour - Responsive Web Design
HTML Tour - Responsive Web DesignHTML Tour - Responsive Web Design
HTML Tour - Responsive Web DesignPlain Concepts
 
Optimizar WordPress - Presentacion Caracol Digital
Optimizar WordPress - Presentacion Caracol DigitalOptimizar WordPress - Presentacion Caracol Digital
Optimizar WordPress - Presentacion Caracol DigitalGerardo García Asensio
 

Similar a Front Performance (20)

Optimiza tus webs a bajo costo - WCVenezuela2021
Optimiza tus webs a bajo costo - WCVenezuela2021Optimiza tus webs a bajo costo - WCVenezuela2021
Optimiza tus webs a bajo costo - WCVenezuela2021
 
Las palmas devops: Pruebas de carga web
Las palmas devops: Pruebas de carga webLas palmas devops: Pruebas de carga web
Las palmas devops: Pruebas de carga web
 
Sitios web de alto rendimiento y alta disponibilidad
Sitios web de alto rendimiento y alta disponibilidadSitios web de alto rendimiento y alta disponibilidad
Sitios web de alto rendimiento y alta disponibilidad
 
Charla betabeers optimización y rendimiento en Wordpress - Marcos Ramajo
Charla betabeers optimización y rendimiento en Wordpress - Marcos RamajoCharla betabeers optimización y rendimiento en Wordpress - Marcos Ramajo
Charla betabeers optimización y rendimiento en Wordpress - Marcos Ramajo
 
5. Diego Ferreiro. Software Architect
5. Diego Ferreiro. Software Architect5. Diego Ferreiro. Software Architect
5. Diego Ferreiro. Software Architect
 
Si tu aplicación no responde rápido pierdes clientes
Si tu aplicación no responde rápido pierdes clientesSi tu aplicación no responde rápido pierdes clientes
Si tu aplicación no responde rápido pierdes clientes
 
Mejorar WPO en WordPress
Mejorar WPO en WordPressMejorar WPO en WordPress
Mejorar WPO en WordPress
 
Antonio Torres - WPO Wordpress - EN@E Digital Meeting
Antonio Torres - WPO Wordpress - EN@E Digital MeetingAntonio Torres - WPO Wordpress - EN@E Digital Meeting
Antonio Torres - WPO Wordpress - EN@E Digital Meeting
 
Presentación Rodrigo Valdes de Petris- eCommerce Day Santiago 2015
Presentación Rodrigo Valdes de Petris- eCommerce Day Santiago 2015 Presentación Rodrigo Valdes de Petris- eCommerce Day Santiago 2015
Presentación Rodrigo Valdes de Petris- eCommerce Day Santiago 2015
 
Remodelación del sitio Web de Canaima GNU/Linux
Remodelación del sitio Web de Canaima GNU/LinuxRemodelación del sitio Web de Canaima GNU/Linux
Remodelación del sitio Web de Canaima GNU/Linux
 
Hacking Web Performance en Español - JSConf México 2020
Hacking Web Performance en Español - JSConf México 2020Hacking Web Performance en Español - JSConf México 2020
Hacking Web Performance en Español - JSConf México 2020
 
Avance1
Avance1Avance1
Avance1
 
Caso de estudio - Optimizacion en magento
Caso de estudio - Optimizacion en magentoCaso de estudio - Optimizacion en magento
Caso de estudio - Optimizacion en magento
 
Escalabilidad de Websites
Escalabilidad de WebsitesEscalabilidad de Websites
Escalabilidad de Websites
 
C:\fakepath\optimizacion
C:\fakepath\optimizacionC:\fakepath\optimizacion
C:\fakepath\optimizacion
 
Optimiza tus webs Grails. Greach 2011
Optimiza tus webs Grails. Greach 2011Optimiza tus webs Grails. Greach 2011
Optimiza tus webs Grails. Greach 2011
 
Optimización de aplicaciones web con base de datos NoSQL In-Memory
Optimización de aplicaciones web con base de datos NoSQL In-MemoryOptimización de aplicaciones web con base de datos NoSQL In-Memory
Optimización de aplicaciones web con base de datos NoSQL In-Memory
 
HTML Tour - Responsive Web Design
HTML Tour - Responsive Web DesignHTML Tour - Responsive Web Design
HTML Tour - Responsive Web Design
 
Optimizar WordPress - Presentacion Caracol Digital
Optimizar WordPress - Presentacion Caracol DigitalOptimizar WordPress - Presentacion Caracol Digital
Optimizar WordPress - Presentacion Caracol Digital
 
Acelera tu sitio WordPress WPO
Acelera tu sitio WordPress WPOAcelera tu sitio WordPress WPO
Acelera tu sitio WordPress WPO
 

Último

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
 
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
 
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
 
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
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIAWilbisVega
 
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
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdfIsabellaMontaomurill
 
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
 
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
 
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
 
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
 
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
 
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
 
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
 
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
 

Último (15)

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
 
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
 
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
 
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
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
 
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...
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdf
 
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)
 
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
 
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
 
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
 
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
 
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
 
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
 
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
 

Front Performance

  • 1. Front Performance Ana Encinar Madrid | November 30 - December 1, 2018 Ana Encinar @jnisabe
  • 4. LA WEB Evolución × Hypertext document (http 0.9) × Web page (http 1.0 y 1.1) × Web application Ana Encinar @jnisabe
  • 5. Arquitectura del navegador DOM, CSSOM y JavaScript Ana Encinar @jnisabe
  • 6. 6 conceptos básicos Ana Encinar @jnisabe
  • 7. 6 conceptos básicos 1. Tener en cuenta la performance 2. Asegurar la performance 3. Tamaño de los ficheros 4. La performance en JavaScript 5. Gestión de memoria 6. Gestión de recursos del navegador Ana Encinar @jnisabe
  • 8. Tener en cuenta la performance Ana Encinar @jnisabe
  • 9. Tener en cuenta la performance ¿Por qué es importante la performance? × No más 2-3 segundos Ana Encinar @jnisabe
  • 10. Tener en cuenta la performance ¿Por qué es importante la performance? × No más 2-3 segundos × Un problema de rendimiento, es un problema de usabilidad Ana Encinar @jnisabe
  • 12. Asegurar la performance básica Ana Encinar @jnisabe
  • 13. Asegurar la performance básica A qué llamamos performance básica × La carga de las hojas estilos al principio del código HTML × Carga del javascript al final del código HTML × No bloquear los archivos. async / defer × Optimización de elementos multimedia × Imágenes vectoriales × No base64 × Carga en diferido / lazy load Ana Encinar @jnisabe
  • 14. Asegurar la performance básica Optimización de elementos multimedia × Carga en diferido / lazy load - Data-src Ana Encinar @jnisabe
  • 15. Asegurar la performance básica Optimización de elementos multimedia × Carga en diferido / lazy load - Data-src × jQuery plugin Ana Encinar @jnisabe
  • 16. Tamaño de los ficheros Ana Encinar @jnisabe
  • 17. Minificación js (task runner) Tamaño de los ficheros Ana Encinar @jnisabe
  • 18. Performance en javascript Ana Encinar @jnisabe
  • 19. Performance en javascript V8 performance Ana Encinar @jnisabe
  • 20. Performance en javascript v8/spidermonkey performance Abstract syntax tree Ana Encinar @jnisabe
  • 21. Performance en javascript V8 performance Ana Encinar @jnisabe
  • 22. × Reflows Performance en javascript Ana Encinar @jnisabe
  • 23. × Reflows × ¿Cuantos eventos tengo en la vista? × Usabilidad y procesamiento Performance en javascript Ana Encinar @jnisabe
  • 24. Performance en javascript Ana Encinar @jnisabe
  • 25. × Reflows × ¿Cuantos eventos tengo en la vista? × Usabilidad y procesamiento × Framework vs nativo Performance en javascript Ana Encinar @jnisabe
  • 26. La optimización de netflix × ¿Por qué Netflix cambia? × Muchas conexiones desde móviles × Conexiones de red lentas × ¿Qué mejoró? × Reduce el tiempo de carga un 50% × Reduce el tamaño fichero js en cliente a menos de 200kb Performance en javascript Ana Encinar @jnisabe
  • 27. La optimización de netflix Performance en javascript Ana Encinar @jnisabe
  • 28. ¿Mejor o peor? Performance en javascript Ana Encinar @jnisabe
  • 29. ¿Qué tipo de programación usar? Performance en javascript Programación imperativa Programación funcional http://jsben.ch/ Ana Encinar @jnisabe
  • 30. Polyfill Array.prototype.find Performance en javascript https://www.ecma-international.org/ecma- 262/6.0/#sec-array.prototype.find Ana Encinar @jnisabe
  • 31. Bucles × Coste de O(N) × El coste se hace mayor en operaciones grandes × Fácil de depurar Recursividad × Un if tiene coste equivalente O(1) × Un algoritmo recursivo O(T(S1;S2)) × Muy útil en estructuras con forma de árbol. El DOM tiene estructura de árbol × No es fácil de depurar Performance en javascript Bucles vs recursividad Ana Encinar @jnisabe
  • 32. if × El coste se hace mayor en operaciones grandes switch × En casos de muchas comprobaciones, se vuelve óptimo. Performance en javascript if vs switch Ana Encinar @jnisabe
  • 33. Performance en javascript condicionales; bloque, optimización prematura, ternarias… Ana Encinar @jnisabe
  • 34. Las librerías y proyectos ajenos NO siempre te salvan la vida. NO te engañes Ana Encinar @jnisabe
  • 35. Descarga el hilo principal de funcionalidad, y aprovecha los workers Ana Encinar @jnisabe
  • 36. × Web worker × No tiene acceso al DOM × Sirve para descargar lógica del hilo principal × Workers Service × Permite gestionar solicitudes de red × Push × Background sync × https Performance en javascript Workers Service vs web workers Ana Encinar @jnisabe
  • 39. Gestión de memoria Ana Encinar @jnisabe
  • 40. Algoritmo de referencias Algoritmo de barrido Gestión de memoria Ana Encinar @jnisabe
  • 41. Herramientas para detectarlo Heap Profiles en Chrome Jshint Jslint Gestión de memoria/Recolector de basura Ana Encinar @jnisabe
  • 44. Gestión de recursos del navegador Ana Encinar @jnisabe
  • 45. HTTP1 Una conexión, 1 petición × Cuello de botella Mayor trafico de red, no hay priorización. HTTP2 Peticiones en paralelo × Multiplexación IE: límite 2 peticiones en paralelo Chrome, Firefox: 6 peticiones en paralelo ( versiones antiguas). 16 peticiones (últim. Versiones) Gestión de recursos del navegador Ana Encinar @jnisabe
  • 46. HTTP2; optimizaciones Priorización × Preload × Prefetch Server push × Servidor SPDY (Firefox, Opera y Chrome) × Push de servidor no de aplicación × Gasto de recursos innecesario Gestión de recursos del navegador Ana Encinar @jnisabe
  • 47. HTTP2; optimizaciones server push– pros y contras PROS × Tiempo de obtención de recurso menor CONTRAS × Si el cliente ya tiene los recursos en caché, la carga es un desperdicio × La aplicación debe decidir si debe empujar el recurso, no puede saber si el cliente tiene el recurso Gestión de recursos del navegador Ana Encinar @jnisabe
  • 48. Ejemplo server push Gestión de recursos del navegador Ana Encinar @jnisabe
  • 49. Lighthouse – web test tool Herramientas para testear Ana Encinar @jnisabe
  • 50. Resumen Ana Encinar @jnisabe • Carga de página en 2-3 segundos para no perder usuarios • Ficheros minificados tanto css y javascript como el html • Tener en mente el Abstract syntax tree de nuestro código • v8 vs spiderMonkey • Reflows • Delegación de eventos. Debounce necesarios • Estudiar el contexto en el que se usa un framework • Uso de workers • Cuidar la memoria en el navegador • Mejoras de http2 • Cuidado con el número de request en paralelo
  • 51. Links × Workers × https://www.loxodrome.io/post/web-worker-performance/ × https://github.com/runspired/webworker-performance × Testing tools × https://progressivetooling.com/ × Documentación Chrome dev tools × https://developers.google.com/web/tools/chrome-devtools/evaluate-performance/ × https://developers.google.com/web/tools/chrome-devtools/speed/get-started × https://developers.google.com/web/tools/chrome-devtools/memory-problems/heap- snapshots × https://developers.google.com/web/tools/chrome-devtools/memory-problems/allocation- profiler × https://developers.google.com/web/tools/chrome-devtools/memory-problems/ × https://developers.google.com/web/tools/puppeteer/#next-steps × https://developers.google.com/web/fundamentals/performance/rail
  • 53. ¡Buscamos gente! Maquetador web Less,sass, html, css3… Backend developer Java, spring framework, AWS, elasticsearch, microservicios… DevOps Engineer Prometheus, Terraform, Vagrant/Docker, SonarQube Ana Encinar @jnisabe Encuentra las ofertas en nuestro linkedin o idealista.com/empleo/ofertas :-)