SlideShare a Scribd company logo
1 of 110
Download to read offline
Picture from Simon Howden freedigitalphotos.net!
hacking web
performance
maximiliano firtman
@firt
firt.dev
mobile+web developer
consulting & training
firt.dev/learn
firt.dev
Tengo dos objetivos hoy…
Que te sientas mal
Enseñarte trucos
😁
¡Empecemos!
Yo se que ya sabes que...
http://www.flickr.com/photos/steenslag/22689920/ - borrowed fromSteve Souders
Picture from Simon Howden freedigitalphotos.net
Picture from Simon Howden freedigitalphotos.net
15
Picture from Simon Howden freedigitalphotos.net
¡Es principalmente responsabilidad
del front end!
Yo se que ya sabes que...
Existen las métricas
centradas en el usuario
Signos Vitales Web
(Core Vitals by Google)
Se calculan sobre el percentil 75
tanto en mobile como desktop
Métricas centradas en el usuario
Largest Contentful Paint
LCP - mide la carga inicial
Métricas centradas en el usuario
First Input Delay
FID - mide la interactividad
Métricas centradas en el usuario
Cumulative Layout Shift
CLS - mide la estabilidad visual
... hay más métricas: Speed Index,
TTFB, FCP, Time to Interactive
"Pero oye, mi web anda rápido"
Objetivos
LCP: 2.5s - 4.0s
FID: 100ms - 300ms
CLS: 0.1 - 0.25
Yo se que ya sabes que
hay que...
Optimizar la transferencia de
recursos
Ya sabes que hay que
Trabajar con TLS y HTTP/2
Ya sabes que hay que
Usar CSS como aperitivo
Ya sabes que hay que
Usar JavaScript como postre
Ya sabes que hay que
Optimizar imágenes
Ya sabes que hay que
Usar Service Workers
Ya sabes que hay que
Ya estás haciendo todo esto, ¿no?
¿Cuál es el problema entonces?
Time to Interactive
El problema
HTTP Archive with Lighthouse
2 3 4
5 6 7 8
9.3
1
9
Si una página tarda más de 3 segundos
El problema
53% abandona
Research by Double Click
El problema
Siembre hemos
subestimado el mundo móvil
iOS y Android
¿Safari y Chrome?
browsers with market share
browsers with market share
¡Usamos Red Celular!
Vamos Max, ¡tenemos 4G! Ya el
rendimiento no es un problema...
(
)
www.gsma.com/mobileeconomy - Dec 2019
Ancho de Banda
Redes celulares
RTT - latency
Min Max
Redes celulares
Min Max
RTT - latency
Redes celulares
Todavía tenemos muchos
problemas de performance
(
)
Chrome Lite Pages 🆕
Chrome 73 Android
Chrome Lite Pages
•Si el usuario habilita
Data Saver
⭐🆕
Se mostrará una Lite Page si
Chrome Lite Pages
• Estás en una red 2G
O
• First Contentful Paint es mayor a 5s
⭐🆕
Lite Page?
Chrome Lite Pages
• Cloud-based rendering
• Optimizaciones "Smart"
• No se cargan todas las
imágenes
⭐🆕
Progressive Web Apps 🆕
Progressive Web Apps 🆕
Progressive Web Apps 🆕
¡A Hackear Web Performance!
Hackear Carga Inicial
Evitar más de un roundtrip
Carga Inicial
• TCP Slow Start - initial congestion window
(initcwnd)
• Linux: 14.6 KiB
KiB?
🤔
¿Cuántos bytes en un kilobyte?
1 KB = 1024 bytes
1 KB = 1024 bytes
1 KB = 1000 bytes
1 KiB = 1024 bytes
Evitar más de un rountrip
Carga Inicial
• TCP Slow Start - initial congestion window
(initcwnd)
• Linux: 14.6 KiB
Above the Fold
(ATF)
Below the Fold
(BTF)
Entregar ATF en 14.6 KiB
Carga Inicial
• Embeber todo el CSS y JS que entre
• Si hay espacio, agregar logo y/o imágenes
en baja resolución
Evitar el redirect de http a httpS
• Usar HSTS (HTTP Strict Transport Security)
• Cabecera
• Opt-in en hstspreload.org
Carga Inicial
Hackear la Transferencia de
Datos
HTTP/3 (sobre QUIC)
Transferencia de Datos
• Protocolo "beta" sobre UDP
• Reduce latencia y congestión de mensajes
• Interfaz HTTP/2 con TLS
•
Usar Brotli
• Puede ahorrar hasta ~25% de transferencia
comparado con GZIP
Transferencia de Datos
Hackear Carga de Recursos
Control de Caché Moderno
Carga de Recursos
• Hash en nombres de archivos es un patrón común
• Navegadores hacen igual un request condicional
• Hola a Cache-Control: immutable
Control de Caché Moderno
Carga de Recursos
Hay un nuevo patrón común
• 1) entregar desde el caché
• 2) actualizarlo en el background para el futuro
Control de Caché Moderno
Carga de Recursos
Cache-Control: stale-while-revalidate=99
Control de Caché Moderno
Carga de Recursos
Calentar motores
• Ayudar al navegador a comenzar cuanto antes
• Consultas DNS: ~150ms
• Conexiones TCP y TLS: ~200ms
Carga de Recursos
Anunciar consultas DNS
<link rel="dns-prefetch" href=“https://newdomain.com">
HTML
Carga de Recursos
Anunciar conexiones TLS
<link rel="preconnect" href=“https://newdomain.com”
crossorigin>
HTML
Carga de Recursos
Anunciando en la cabecera
Link: <https://my-analytics.com>; rel=preconnect;
crossorigin
HTTP
Carga de Recursos
Precarga
Ayudar al navegador a manejar la prioridad de
descarga de recursos
Carga de Recursos
Precarga
<link rel="preload" href=“styles.css” as=“style”>
HTML
Carga de Recursos
Precarga
Link: <https://otherhost.com/font.woff2>; rel=preload;
as=font; crossorigin
HTTP
Carga de Recursos
Priority Hints
<link rel="preload" as="image"
href="hero.jpg" importance="high">
<img src="otherimage.jpg" importance="low">
HTML
🆕
Carga de Recursos
Reevaluar CDNs
• Era muy común descargar recursos de CDNs
• Safari ya no usa el caché en estos casos y
Chrome lo está por seguir
Carga de Recursos
Hackeando Imágenes
http://www.flickr.com/photos/steenslag/22689920/ - borrowed fromSteve Souders
Una imagen vale más que
mil palabras...
… si baja
Carga Demorada (Lazy Load)
<img src="photo.png" alt="Never forget it"
loading="lazy">
HTML
🆕
Imágenes
Source: addyosmani.com
Es ya hora de reemplazar
JPEG y PNG
Imágenes
WebP
https://github.com/imagemin/zopflipng-bin
32%
Imágenes
AVIF
https://github.com/imagemin/zopflipng-bin
40%
Imágenes
Zopfli PNG
https://github.com/imagemin/zopflipng-bin
20%
Imágenes
Guetzli JPEG
https://github.com/google/guetzli
20%
Imágenes
Hackear lo Conocido
¿React?
¿Angular?
¿Vue?
Lo Conocido
Server-Side: Next.js, Nuxt.js
Generadores estáticos: Eleventy
Lo Conocido
Performance es PRIORIDAD UNO
Hay que empujar siempre más
Vale la pena el esfuerzo
¿Te sientes mal ya?
Foto de freefoto.com
www.firt.dev
@firt
¡GRATIS!

More Related Content

What's hot

Generación de web sites dinámicos usando php
Generación de web sites dinámicos usando phpGeneración de web sites dinámicos usando php
Generación de web sites dinámicos usando php
Carlos Cruz Rincon
 

What's hot (11)

Alyson orozco manuela gallego
Alyson orozco manuela gallegoAlyson orozco manuela gallego
Alyson orozco manuela gallego
 
Alyson orozco manuela gallego
Alyson orozco manuela gallegoAlyson orozco manuela gallego
Alyson orozco manuela gallego
 
Almacenamiento gratuito ffh
Almacenamiento gratuito ffhAlmacenamiento gratuito ffh
Almacenamiento gratuito ffh
 
Alternativas de hosting para WordPress
Alternativas de hosting para WordPressAlternativas de hosting para WordPress
Alternativas de hosting para WordPress
 
Front-end: Diseñar webs rápidas, flexibles y potentes
Front-end: Diseñar webs rápidas, flexibles y potentesFront-end: Diseñar webs rápidas, flexibles y potentes
Front-end: Diseñar webs rápidas, flexibles y potentes
 
Sacándole el jugo a apache
Sacándole el jugo a apacheSacándole el jugo a apache
Sacándole el jugo a apache
 
Web Performance Optimization
Web Performance OptimizationWeb Performance Optimization
Web Performance Optimization
 
Protocol HTTP
Protocol HTTPProtocol HTTP
Protocol HTTP
 
Hosting: Cuál es el apropiado para mi negocio en Internet
Hosting: Cuál es el apropiado para mi negocio en InternetHosting: Cuál es el apropiado para mi negocio en Internet
Hosting: Cuál es el apropiado para mi negocio en Internet
 
Introducción a Protocol Buffers
Introducción a Protocol BuffersIntroducción a Protocol Buffers
Introducción a Protocol Buffers
 
Generación de web sites dinámicos usando php
Generación de web sites dinámicos usando phpGeneración de web sites dinámicos usando php
Generación de web sites dinámicos usando php
 

Similar to Hacking Web Performance en Español - JSConf México 2020

Similar to Hacking Web Performance en Español - JSConf México 2020 (20)

Adrián Garrido - WPO para WordPress.pptx
Adrián Garrido - WPO para WordPress.pptxAdrián Garrido - WPO para WordPress.pptx
Adrián Garrido - WPO para WordPress.pptx
 
Rendimiento y velocidad, acelera tu sitio WordPress
Rendimiento y velocidad, acelera tu sitio WordPressRendimiento y velocidad, acelera tu sitio WordPress
Rendimiento y velocidad, acelera tu sitio WordPress
 
Acelera tu sitio WordPress WPO
Acelera tu sitio WordPress WPOAcelera tu sitio WordPress WPO
Acelera tu sitio WordPress WPO
 
Rendimiento y velocidad en WordPress
Rendimiento y velocidad en WordPress Rendimiento y velocidad en WordPress
Rendimiento y velocidad en WordPress
 
Html5
Html5Html5
Html5
 
Cómo volarle la peluca a tus usuarios con la velocidad de tu sitio?
Cómo volarle la peluca a tus usuarios con la velocidad de tu sitio?Cómo volarle la peluca a tus usuarios con la velocidad de tu sitio?
Cómo volarle la peluca a tus usuarios con la velocidad de tu sitio?
 
Explorando html5 - Inicio
Explorando html5 - InicioExplorando html5 - Inicio
Explorando html5 - Inicio
 
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
 
Performance en Drupal 7
Performance en Drupal 7Performance en Drupal 7
Performance en Drupal 7
 
Webinar: “Cómo proteger–de verdad–tus aplicaciones web”
Webinar: “Cómo proteger–de verdad–tus aplicaciones web”Webinar: “Cómo proteger–de verdad–tus aplicaciones web”
Webinar: “Cómo proteger–de verdad–tus aplicaciones web”
 
High performance Web Sites
High performance Web SitesHigh performance Web Sites
High performance Web Sites
 
WPO para bloggers de viaje: mejora el tiempo de carga de tu blog
WPO para bloggers de viaje: mejora el tiempo de carga de tu blogWPO para bloggers de viaje: mejora el tiempo de carga de tu blog
WPO para bloggers de viaje: mejora el tiempo de carga de tu blog
 
Las diez estrategias para mejorar la presencia Online de tu negocio
Las diez estrategias para mejorar la presencia Online de tu negocioLas diez estrategias para mejorar la presencia Online de tu negocio
Las diez estrategias para mejorar la presencia Online de tu negocio
 
Presentaciones Sebastian Po - eCommerce IT Camp
Presentaciones Sebastian Po - eCommerce IT CampPresentaciones Sebastian Po - eCommerce IT Camp
Presentaciones Sebastian Po - eCommerce IT Camp
 
Apuntes entorno cliente servidor
Apuntes entorno cliente   servidorApuntes entorno cliente   servidor
Apuntes entorno cliente servidor
 
Avance1
Avance1Avance1
Avance1
 
Optimización Web (+ HTML5)
Optimización Web (+ HTML5)Optimización Web (+ HTML5)
Optimización Web (+ HTML5)
 
MoviWeb: Plataforma para Soportar el Acceso a Sitios Web desde Dispositivos M...
MoviWeb: Plataforma para Soportar el Acceso a Sitios Web desde Dispositivos M...MoviWeb: Plataforma para Soportar el Acceso a Sitios Web desde Dispositivos M...
MoviWeb: Plataforma para Soportar el Acceso a Sitios Web desde Dispositivos M...
 
Backbeam
BackbeamBackbeam
Backbeam
 
Novedades en Arquitectura Front End // Meetup UX UI @UTN Mendoza
Novedades en Arquitectura Front End // Meetup UX UI @UTN MendozaNovedades en Arquitectura Front End // Meetup UX UI @UTN Mendoza
Novedades en Arquitectura Front End // Meetup UX UI @UTN Mendoza
 

More from Maximiliano Firtman

Modeveast Keynote: "Mobile. Change is the only constant"
Modeveast Keynote: "Mobile. Change is the only constant"Modeveast Keynote: "Mobile. Change is the only constant"
Modeveast Keynote: "Mobile. Change is the only constant"
Maximiliano Firtman
 

More from Maximiliano Firtman (20)

ChatGPT and AI for Web Developers
ChatGPT and AI for Web DevelopersChatGPT and AI for Web Developers
ChatGPT and AI for Web Developers
 
PWA Cheat Sheet 2023
PWA Cheat Sheet 2023PWA Cheat Sheet 2023
PWA Cheat Sheet 2023
 
The modern PWA Cheat Sheet
The modern PWA Cheat SheetThe modern PWA Cheat Sheet
The modern PWA Cheat Sheet
 
Hacking Web Performance 2019
Hacking Web Performance 2019Hacking Web Performance 2019
Hacking Web Performance 2019
 
Progressive Web Apps Keynote
Progressive Web Apps KeynoteProgressive Web Apps Keynote
Progressive Web Apps Keynote
 
Hacking Web Performance
Hacking Web PerformanceHacking Web Performance
Hacking Web Performance
 
Uncovering Secrets of Progressive Web Apps
Uncovering Secrets of Progressive Web AppsUncovering Secrets of Progressive Web Apps
Uncovering Secrets of Progressive Web Apps
 
Hacking Web Performance
Hacking Web Performance Hacking Web Performance
Hacking Web Performance
 
Hacking Web Performance @ ForwardJS 2017
Hacking Web Performance @ ForwardJS 2017Hacking Web Performance @ ForwardJS 2017
Hacking Web Performance @ ForwardJS 2017
 
La Web Salta al Mundo Físico - Web meets Physical World (spanish)
La Web Salta al Mundo Físico - Web meets Physical World (spanish)La Web Salta al Mundo Físico - Web meets Physical World (spanish)
La Web Salta al Mundo Físico - Web meets Physical World (spanish)
 
Progressive Web Apps (español - spanish)
Progressive Web Apps (español - spanish)Progressive Web Apps (español - spanish)
Progressive Web Apps (español - spanish)
 
High Performance Web - Full Stack Toronto
High Performance Web - Full Stack TorontoHigh Performance Web - Full Stack Toronto
High Performance Web - Full Stack Toronto
 
Responsive Images and Performance
Responsive Images and PerformanceResponsive Images and Performance
Responsive Images and Performance
 
The Physical World meets the Web
The Physical World meets the WebThe Physical World meets the Web
The Physical World meets the Web
 
Extreme Web Performance for Mobile Devices
Extreme Web Performance for Mobile Devices Extreme Web Performance for Mobile Devices
Extreme Web Performance for Mobile Devices
 
Extreme Web Performance for Mobile Device Fluent 2015
Extreme Web Performance for Mobile Device Fluent 2015Extreme Web Performance for Mobile Device Fluent 2015
Extreme Web Performance for Mobile Device Fluent 2015
 
Extreme Web Performance for Mobile Devices - Velocity Barcelona 2014
Extreme Web Performance for Mobile Devices - Velocity Barcelona 2014Extreme Web Performance for Mobile Devices - Velocity Barcelona 2014
Extreme Web Performance for Mobile Devices - Velocity Barcelona 2014
 
Extreme Web Performance for Mobile Devices - Velocity NY
Extreme Web Performance for Mobile Devices - Velocity NYExtreme Web Performance for Mobile Devices - Velocity NY
Extreme Web Performance for Mobile Devices - Velocity NY
 
Extreme Web Performance for Mobile Devices
Extreme Web Performance for Mobile DevicesExtreme Web Performance for Mobile Devices
Extreme Web Performance for Mobile Devices
 
Modeveast Keynote: "Mobile. Change is the only constant"
Modeveast Keynote: "Mobile. Change is the only constant"Modeveast Keynote: "Mobile. Change is the only constant"
Modeveast Keynote: "Mobile. Change is the only constant"
 

Recently uploaded

Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdf
AnnimoUno1
 
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
FagnerLisboa3
 

Recently uploaded (11)

Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdf
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
 
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
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.
 
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxEL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
 
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
 
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdfRefrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
 
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
 

Hacking Web Performance en Español - JSConf México 2020