SlideShare una empresa de Scribd logo
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 - WCVenezuela2021
Fernando Puente
 
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
F.L. Jonathan Araña Cruz
 
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
Ivá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 Ramajo
Marcos Ramajo
 
5. Diego Ferreiro. Software Architect
5. Diego Ferreiro. Software Architect5. Diego Ferreiro. Software Architect
5. Diego Ferreiro. Software Architect
NetLab
 
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
Jesús Franco
 
Mejorar WPO en WordPress
Mejorar WPO en WordPressMejorar WPO en WordPress
Mejorar WPO en WordPress
Antonio 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 Meeting
ENAE 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/Linux
Leonardo 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 2020
Maximiliano Firtman
 
Avance1
Avance1Avance1
Caso de estudio - Optimizacion en magento
Caso de estudio - Optimizacion en magentoCaso de estudio - Optimizacion en magento
Caso de estudio - Optimizacion en magento
Sugerendo
 
Escalabilidad de Websites
Escalabilidad de WebsitesEscalabilidad de Websites
Escalabilidad de Websites
Fabian Andres Ramirez Sepulveda
 
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-Memory
Gonzalo Chacaltana
 
HTML Tour - Responsive Web Design
HTML Tour - Responsive Web DesignHTML Tour - Responsive Web Design
HTML Tour - Responsive Web Design
Plain Concepts
 
Optimizar WordPress - Presentacion Caracol Digital
Optimizar WordPress - Presentacion Caracol DigitalOptimizar WordPress - Presentacion Caracol Digital
Optimizar WordPress - Presentacion Caracol Digital
Gerardo García Asensio
 
Acelera tu sitio WordPress WPO
Acelera tu sitio WordPress WPOAcelera tu sitio WordPress WPO
Acelera tu sitio WordPress WPO
Dani Reguera Bakhache
 

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

trabajo de tecnologia, segundo periodo 9-6f
trabajo de tecnologia, segundo periodo 9-6ftrabajo de tecnologia, segundo periodo 9-6f
trabajo de tecnologia, segundo periodo 9-6f
zoecaicedosalazar
 
Trabajo Coding For kids 1 y 2 grado 9-4.pdf
Trabajo Coding For kids 1 y 2 grado 9-4.pdfTrabajo Coding For kids 1 y 2 grado 9-4.pdf
Trabajo Coding For kids 1 y 2 grado 9-4.pdf
jjfch3110
 
Diagrama de flujo soporte técnico 5to semestre
Diagrama de flujo soporte técnico 5to semestreDiagrama de flujo soporte técnico 5to semestre
Diagrama de flujo soporte técnico 5to semestre
rafaelsalazar0615
 
Posnarrativas en la era de la IA generativa
Posnarrativas en la era de la IA generativaPosnarrativas en la era de la IA generativa
Posnarrativas en la era de la IA generativa
Fernando Villares
 
DESARROLO DE HABILIDADES DE PENSAMIENTO.pdf
DESARROLO DE HABILIDADES DE PENSAMIENTO.pdfDESARROLO DE HABILIDADES DE PENSAMIENTO.pdf
DESARROLO DE HABILIDADES DE PENSAMIENTO.pdf
marianabz2403
 
leidy fuentes - power point -expocccion -unidad 4 (1).pptx
leidy fuentes - power point -expocccion -unidad 4 (1).pptxleidy fuentes - power point -expocccion -unidad 4 (1).pptx
leidy fuentes - power point -expocccion -unidad 4 (1).pptx
Leidyfuentes19
 
3Redu: Responsabilidad, Resiliencia y Respeto
3Redu: Responsabilidad, Resiliencia y Respeto3Redu: Responsabilidad, Resiliencia y Respeto
3Redu: Responsabilidad, Resiliencia y Respeto
cdraco
 
Conceptos Básicos de Programación Proyecto
Conceptos Básicos de Programación ProyectoConceptos Básicos de Programación Proyecto
Conceptos Básicos de Programación Proyecto
cofferub
 
Estructuras Básicas_ Conceptos Basicos De Programacion.pdf
Estructuras Básicas_ Conceptos Basicos De Programacion.pdfEstructuras Básicas_ Conceptos Basicos De Programacion.pdf
Estructuras Básicas_ Conceptos Basicos De Programacion.pdf
IsabellaRubio6
 
EduFlex, una educación accesible para quienes no entienden en clases
EduFlex, una educación accesible para quienes no entienden en clasesEduFlex, una educación accesible para quienes no entienden en clases
EduFlex, una educación accesible para quienes no entienden en clases
PABLOCESARGARZONBENI
 
Conceptos Básicos de Programación. Tecnología
Conceptos Básicos de Programación. TecnologíaConceptos Básicos de Programación. Tecnología
Conceptos Básicos de Programación. Tecnología
coloradxmaria
 
TRABAJO DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
TRABAJO DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdfTRABAJO DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
TRABAJO DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
thomasdcroz38
 
Alan Turing Vida o biografía resumida como presentación
Alan Turing Vida o biografía resumida como presentaciónAlan Turing Vida o biografía resumida como presentación
Alan Turing Vida o biografía resumida como presentación
JuanPrez962115
 
Estructuras básicas_ conceptos de programación (1).docx
Estructuras básicas_ conceptos de programación  (1).docxEstructuras básicas_ conceptos de programación  (1).docx
Estructuras básicas_ conceptos de programación (1).docx
SamuelRamirez83524
 
biogas industrial para guiarse en proyectos
biogas industrial para guiarse en proyectosbiogas industrial para guiarse en proyectos
biogas industrial para guiarse en proyectos
Luis Enrique Zafra Haro
 
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
vazquezgarciajesusma
 
Trabajo Coding For kids 1 y 2 grado 9-4.pdf
Trabajo Coding For kids 1 y 2 grado 9-4.pdfTrabajo Coding For kids 1 y 2 grado 9-4.pdf
Trabajo Coding For kids 1 y 2 grado 9-4.pdf
cj3806354
 
Conceptos Básicos de Programación L.D 10-5
Conceptos Básicos de Programación L.D 10-5Conceptos Básicos de Programación L.D 10-5
Conceptos Básicos de Programación L.D 10-5
JulyMuoz18
 
INFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTAL
INFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTALINFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTAL
INFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTAL
CrystalRomero18
 
Estructuras Básicas_Tecnología_Grado10-7.pdf
Estructuras Básicas_Tecnología_Grado10-7.pdfEstructuras Básicas_Tecnología_Grado10-7.pdf
Estructuras Básicas_Tecnología_Grado10-7.pdf
cristianrb0324
 

Último (20)

trabajo de tecnologia, segundo periodo 9-6f
trabajo de tecnologia, segundo periodo 9-6ftrabajo de tecnologia, segundo periodo 9-6f
trabajo de tecnologia, segundo periodo 9-6f
 
Trabajo Coding For kids 1 y 2 grado 9-4.pdf
Trabajo Coding For kids 1 y 2 grado 9-4.pdfTrabajo Coding For kids 1 y 2 grado 9-4.pdf
Trabajo Coding For kids 1 y 2 grado 9-4.pdf
 
Diagrama de flujo soporte técnico 5to semestre
Diagrama de flujo soporte técnico 5to semestreDiagrama de flujo soporte técnico 5to semestre
Diagrama de flujo soporte técnico 5to semestre
 
Posnarrativas en la era de la IA generativa
Posnarrativas en la era de la IA generativaPosnarrativas en la era de la IA generativa
Posnarrativas en la era de la IA generativa
 
DESARROLO DE HABILIDADES DE PENSAMIENTO.pdf
DESARROLO DE HABILIDADES DE PENSAMIENTO.pdfDESARROLO DE HABILIDADES DE PENSAMIENTO.pdf
DESARROLO DE HABILIDADES DE PENSAMIENTO.pdf
 
leidy fuentes - power point -expocccion -unidad 4 (1).pptx
leidy fuentes - power point -expocccion -unidad 4 (1).pptxleidy fuentes - power point -expocccion -unidad 4 (1).pptx
leidy fuentes - power point -expocccion -unidad 4 (1).pptx
 
3Redu: Responsabilidad, Resiliencia y Respeto
3Redu: Responsabilidad, Resiliencia y Respeto3Redu: Responsabilidad, Resiliencia y Respeto
3Redu: Responsabilidad, Resiliencia y Respeto
 
Conceptos Básicos de Programación Proyecto
Conceptos Básicos de Programación ProyectoConceptos Básicos de Programación Proyecto
Conceptos Básicos de Programación Proyecto
 
Estructuras Básicas_ Conceptos Basicos De Programacion.pdf
Estructuras Básicas_ Conceptos Basicos De Programacion.pdfEstructuras Básicas_ Conceptos Basicos De Programacion.pdf
Estructuras Básicas_ Conceptos Basicos De Programacion.pdf
 
EduFlex, una educación accesible para quienes no entienden en clases
EduFlex, una educación accesible para quienes no entienden en clasesEduFlex, una educación accesible para quienes no entienden en clases
EduFlex, una educación accesible para quienes no entienden en clases
 
Conceptos Básicos de Programación. Tecnología
Conceptos Básicos de Programación. TecnologíaConceptos Básicos de Programación. Tecnología
Conceptos Básicos de Programación. Tecnología
 
TRABAJO DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
TRABAJO DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdfTRABAJO DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
TRABAJO DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
 
Alan Turing Vida o biografía resumida como presentación
Alan Turing Vida o biografía resumida como presentaciónAlan Turing Vida o biografía resumida como presentación
Alan Turing Vida o biografía resumida como presentación
 
Estructuras básicas_ conceptos de programación (1).docx
Estructuras básicas_ conceptos de programación  (1).docxEstructuras básicas_ conceptos de programación  (1).docx
Estructuras básicas_ conceptos de programación (1).docx
 
biogas industrial para guiarse en proyectos
biogas industrial para guiarse en proyectosbiogas industrial para guiarse en proyectos
biogas industrial para guiarse en proyectos
 
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
 
Trabajo Coding For kids 1 y 2 grado 9-4.pdf
Trabajo Coding For kids 1 y 2 grado 9-4.pdfTrabajo Coding For kids 1 y 2 grado 9-4.pdf
Trabajo Coding For kids 1 y 2 grado 9-4.pdf
 
Conceptos Básicos de Programación L.D 10-5
Conceptos Básicos de Programación L.D 10-5Conceptos Básicos de Programación L.D 10-5
Conceptos Básicos de Programación L.D 10-5
 
INFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTAL
INFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTALINFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTAL
INFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTAL
 
Estructuras Básicas_Tecnología_Grado10-7.pdf
Estructuras Básicas_Tecnología_Grado10-7.pdfEstructuras Básicas_Tecnología_Grado10-7.pdf
Estructuras Básicas_Tecnología_Grado10-7.pdf
 

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 :-)