Lazy Loading de Imágenes: Técnicas y Estrategias Efectivas
Clase 18 de 38 • Curso de Optimización Web
Contenido del curso
- 7

Entendiendo el Critical Rendering Path en Navegadores Web
11:11 - 8

Optimización de JavaScript para mejorar rendimiento web
10:53 - 9

Priorización de recursos CSS para mejorar rendimiento web
11:50 - 10

Optimización de Carga de Recursos con Preload, Prefetch y Preconnect
10:36 - 11

Optimización de Animaciones CSS para Mejorar el Renderizado
02:35
- 15

Optimización de Imágenes para Web: Formatos y Herramientas Efectivas
15:32 - 16

Optimización de Imágenes para Web: Uso de Tamaños y Formatos Adecuados
05:21 - 17

Comparación entre WebFonts y SVG: Ventajas y Desventajas
08:58 - 18

Lazy Loading de Imágenes: Técnicas y Estrategias Efectivas
10:14 - 19

Carga Adaptativa de Imágenes con Gatsby y Web API
04:13
- 20

Optimización de JavaScript para Producción Web
11:20 - 21

Análisis y Optimización de Bundles con Webpack
11:25 - 22

Optimización de Bundles en Proyectos Web con Webpack
17:14 - 23

Code Splitting con Webpack: Optimización de Bundles en Proyectos Web
06:31 - 24

Lazy Loading de Videos con JavaScript y Modales
21:44 - 25

Event Propagation y Filtrado de Eventos en JavaScript
17:24 - 26

Integración de Librerías en Proyectos JavaScript
14:58 - 27

Optimización de Carga de Modales con Lazy Loading en Webpack
13:25 - 28

Renderizado en Cliente vs. Servidor: Diferencias y Funciones
08:44 - 29

Implementación de Server Side Rendering en NodeJS
19:41 - 30

Optimización de Sitios con Static Site Generation
15:51
¿Qué es el lazy loading en imágenes?
El lazy loading es una técnica avanzada que optimiza la carga de imágenes en páginas web. Se divide principalmente en dos tipos: el lazy loading de carga y el lazy loading de progresión en la imagen. Esta técnica mejora el rendimiento de la página web al cargar únicamente aquellas imágenes que se necesitan ver, reduciendo el uso de banda y acelerando así la experiencia del usuario. Al usar esta técnica, no sólo ahorras recursos a los usuarios, sino que también garantizas que la página cargue más rápido, mejorando su UX.
¿Cómo funciona el lazy loading por progresión?
Un ejemplo claro de lazy loading por progresión es el sitio web Medium. Al implementar esta técnica, las imágenes se cargan inicialmente en una calidad baja y se van mejorando progresivamente conforme el usuario dispone de más espacio para visualizar la imagen completa. De esta manera, el navegador reemplaza dichas imágenes pixeladas y desenfocadas por versiones de mayor resolución paulatinamente.
¿Y el lazy loading por carga?
Por otro lado, el lazy loading por carga se encarga de cargar únicamente aquellas imágenes que se encuentran dentro de los primeros quinientos píxeles que el usuario ve al acceder a la página. Las imágenes que están más abajo, o que no son necesarias en ese momento, permanecen sin cargar hasta que el usuario hace scroll y las necesita visualizar. Esto es particularmente útil para mejorar considerablemente el tiempo de carga y reducir el uso innecesario de datos.
¿Cuál es la mejor manera de implementar lazy loading por carga?
Existen tres principales métodos para implementar el lazy loading por carga. A continuación, te los explico en orden de efectividad:
-
Método Nativo: Ahora los navegadores permiten usar el atributo
loadingdentro de las etiquetas de imágenes, estableciendo el valor comolazy. Es una opción conveniente porque no requiere dependencias adicionales, ya que el navegador decide cuándo cargar la imagen. Sin embargo, el reto es su compatibilidad limitada con navegadores, como Internet Explorer, Safari y Opera.<img src="imagen.jpg" alt="Descripción" loading="lazy"> -
Intersection Observer: Esta API observa cuándo un elemento está visible en el viewport, permitiendo cargar imágenes justo en el momento que son necesarias. Aunque es relativamente fácil de usar y tiene buen soporte, la última versión, con características avanzadas, aún tiene compatibilidad limitada.
-
Scroll Listener: Este método implica asignar un evento al scroll para determinar la posición de los elementos y decidir cuándo cargar la imagen. Sin embargo, genera muchos eventos por segundo, lo que puede impactar negativamente en el rendimiento.
¿Cómo aplicar lazy loading en un proyecto?
Veamos un ejemplo práctico. Asumamos que tienes un proyecto con un carrusel de imágenes. Para implementar el lazy loading usando el método nativo, simplemente debes agregar el atributo loading="lazy" en cada etiqueta de imagen:
// Código en el archivo CarruselItem.js
const imagen = (
<img
src={source}
alt="Descripción"
className="mi-clase"
loading="lazy"
/>
);
Tras guardar los cambios y recargar la página, al desplazarte, observarás cómo el navegador trae las imágenes solo cuando son necesarias.
¿Qué otras alternativas podemos usar?
Como ejercicio, puedes buscar implementar otras soluciones de lazy loading. Utiliza la API IntersectionObserver si deseas explorar nuevas técnicas. O desafíate con el scroll listener para entender cómo medir eficazmente la posición de un elemento.
¿Prefieres soluciones preexistentes? Existen librerías como lozad.js, que deciden automáticamente si usar el lazy loading nativo o el scroll listening basado en el navegador.
Continúa explorando y perfeccionando tus habilidades con estas técnicas, pronto avanzaremos a temas más complejos como el responsive loading. ¡Sigue adelante, el aprendizaje no se detiene!