Este documento presenta información sobre optimización del rendimiento web. Habla sobre la importancia de la velocidad, el uso de caché, imágenes optimizadas, minificación de CSS y JS, y tecnologías emergentes como AMP y PWAs. El orador comparte consejos sobre infraestructura, caché, frontend y tendencias para mejorar la experiencia del usuario.
6. Casi el 90% del tiempo los usuarios
están conectados en sus móviles a partir
de aplicaciones.
7. 29%
of smartphone users will
immediately switch to
another site or app
if it doesn’t satisfy their
needs (for example, they
can’t find information or
it’s too slow)
40%
of shoppers will wait
no more than three
seconds before
abandoning a retail or
travel site
1s = $1.6 B
Amazon would lose $1.6
billion in sales every year if its
site took one more second to
load
8. “La velocidad no es solo una
característica, es LA característica
Urs Hözle, ingeniero de Google
15. Time To First Byte (TTFB)
El TTFB es el tiempo que tarda un navegador en
recibir la primera pieza de información desde un
servidor web después de realizar la petición al
mismo.
19. Niveles de cache
● Browser
● Reverse proxy
● Memoria
● Disco
● Base de datos / Index
20. Cómo cachear
● Evita hacer el trabajo cada vez
● Evita hacer el trabajo en el path crítico
● Cache permanente
● Cache temporal
● Aplaza la ejecución para después del contenido principal
21. CACHE HIT
1 2
4 3
1
2
REQUEST
REQUEST
Miss vs Hit
CACHE MISS
26. Obteniendo los datos
● Monitoriza siempre
● La base de datos es lenta
● Usa buenos índices, revisa tus “where”
y tus índices
● Si es necesario cambia tus consultas a
solr o elastic
32. ● El tamaño sí importa
● Lazyload y data URI
<img
src="data:image/gif;base64,R0lGODlhEAAQAMQA ..."
data-src="https://www.mysite.xyz/dog.png"
width="725" height="350" alt="My dog">
33. ● El tamaño sí importa
● Lazyload y data URI
● Responsive
<img
srcset="large.jpg 1440w,
medium.jpg 960w,
small.jpg 480w"
sizes="(min-width: 36em) 33.3vw, 100vw"
src="medium.jpg"
alt="…">
Usa srcset para diferentes tamaños por
breakpoints.
Usa <picture> si tus imágenes varían más
especialmente (art direction, croppings, styles, etc).
34. ● El tamaño sí importa
● Lazyload y data URI
● Responsive
● Usa CDN <img src="https://www.mysite.xyz/dog.png" alt="My dog">
<img src="https://cdn.mysite.xyz/dog.png" alt="My dog">
35. CSS/JS
● Minificación y unificación
● Evita cargar código innecesario según el dispositivo
● Pon inline el CSS que “pinte” la parte crítica de la página
● CSS Sprites
● El resto al final del DOM
36. Precarga de recursos
Dns-prefetch
(dns)
Preconnect
(dns+tcp)
Prefetch
(low priority, next navigation)
Prerender
(low priority, next navigation, all page)
Preload
(high priority, current navigation)
<head>
<link rel="prefetch" href="https://example.com/media/image.jpg">
...
<body>
<img src="https://example.com/media/image.jpg" alt="...">
38. Nuevas cabeceras
● Downlink Indica la velocidad máxima
de descarga.
● Save-Data Este booleano indica si se
deben tomar medidas adicionales para
reducir la carga útil.
<meta http-equiv="Accept-CH"
content="DPR,Width,Viewport-Width,Downlink,Save-Data">
39. AMP
Accelerated Mobile Pages ( AMP )
es un proyecto open source
que pretende ayudar a los editores a crear
contenido optimizado para móviles
y que pueda ser
cargado instantáneamente
en todas partes.
40. Progressive Web Apps
Experiencia en móviles lo más parecida a la de una aplicación nativa
● Carga instantánea
● Interfaz como una app
● Añadir la página a la HomeScreen del móvil
● Full screen
● Offline first con Service Workers
● Push notifications
43. Esta tarde Drupal & Tapas
Hora: 19:30
Lugar: Four Lions (Calle Sierra Pambley, 6)
https://goo.gl/maps/nvrrqk3CwMS2
https://groups.drupal.org/node/516823
The sizes attribute defines the element’s width to be 50% the size of the viewport when the viewport is 650px or more. For example, if the viewport is 800px, the element’s width is set to 400px. The browser then selects the srcset resource relative to 400px, assuming the device pixel ratio is 1, which in this instance is narrow.jpg (320px).
Un service worker, es un proxy (que tú controlas) entre el navegador y el servidor
Acceso offline a la página (yei, sin internet)
Sitios web que cargan rapidísimo (incluso más rápido que las apps nativas)