Isotipo EDteam

"Si puedes soñarlo, puedes hacerlo". – Walt Disney

EDteam Logo

Haz tu página web más rápida con Lazy Load

Conoce y pon en práctica Lazy load, para mejorar el tiempo de carga de cualquier página web, evitando consumir recursos innecesarios

Diseño web
Lectura de 8 minutos
hace 10 meses
Haz tu página web más rápida con Lazy Load

Los contenidos de las páginas web suelen ser el mayor aliado para atraer a nuestros usuarios, pero, si lo descuidamos, puede ser nuestro peor enemigo. Y deberíamos preocuparnos por eso, ya que no queremos más enemigos de los que ya tenemos, siendo este un problema muy fácil de evitar.

¿Nuestro enemigo?

Lamentablemente sí, puede ser nuestro enemigo; resulta que hoy en día todas las páginas web utilizan algo en común para mostrar descripciones, productos, servicios, resultados, decoraciones en la web etc., y esto en común, son las imágenes, por lo tanto, tratemos de imaginar una página web exitosa con cero imágenes. ¿Difícil verdad?, necesitamos imágenes para tener ese toque mágico.

Desafortunadamente las imágenes serán el contenido más pesado en nuestra Web, aproximadamente un 50% a 60% de nuestro total.

Así que te mostraré una manera de mantener el contenido como un aliado para nuestro sitio Web, y brindar una buena experiencia a nuestros usuarios con Lazy load.

¿Lazy load?

Así es, Lazy load, carga floja, o carga diferida. Como gustes llamarla. Este no es un concepto nuevo, de hecho es un patrón de diseño, el cual nos ayudará a optimizar los tiempos de carga y reducir el peso de nuestra web al ser cargada por un usuario.

El objetivo de Lazy load es aplazar los tiempos de descarga del contenido de nuestra Web y obtener solo los recursos necesarios de acuerdo a la navegación del usuario, es decir, si en nuestra página contamos con un total de 300 imágenes y no utilizamos Lazy load, estas serán descargadas sin ninguna restricción, consumiendo recursos innecesarios, en cambio, si utilizamos esta técnica, solo se obtendrán las imágenes que se encuentren en la vista del usuario y las restantes se obtendrán progresivamente de acuerdo a la navegación del usuario.

¿Cómo utilizarlo?

Existen muchas maneras de utilizarlo, así que podemos optar por las que más nos guste o según nuestra necesidad. Aquí te dejo 3 ejemplos.

1. Lazy load nativo

La primera forma es manera nativa, sin JavaScript, es la más sencilla, para poder utilizar esta opción necesitamos tener tres puntos:

  1. Una etiqueta <img src="./images/image.webp" />
  2. Cada etiqueta img debe tener mínimo una altura predefinida.
  3. Variedad de imágenes para realizar nuestra prueba.

Así que crearemos un archivo index.html, y dentro de nuestro body colocaremos 2 contenedores de la siguiente manera.

1<body>
2 <div class="container">
3 <div class="gallery_container" id="gallery"></div>
4 </div>
5</body>

Para obtener imágenes contamos con dos opciones. Llenar nuestro div gallery_container con etiquetas img y diferente src, o consumir un endpoint que nos brinde imágenes. En este post utilizaremos la segunda opción, nuestro body quedará de la siguiente manera.

1<body>
2 <div class="container">
3 <div class="gallery_container" id="gallery"></div>
4 </div>
5
6 <script>
7 const getImages = () => {
8 // Realizamos peticón de 50 imagenes
9 fetch('https://picsum.photos/v2/list?limit=50')
10 .then(function(response) {
11 return response.json()
12 })
13 .then((images) => {
14 // Obtenemos nuestro elemento contenedor de las imagenes
15 // e inyectamos las imagenes que hemos obtenido
16 document.getElementById('gallery').innerHTML = images.map(image =>
17 `<div class='card text-center'>
18 <img loading='lazy' class='image' src="${image.download_url}" alt='...' >
19 </div>`
20 ).join('')
21 });
22 }
23
24 getImages()
25 </script>
26</body>

Y no olvidemos de asignar un tamaño a las imágenes.

Como podemos notar el elemento img que estamos insertando en el script contiene la propiedad loading. Podemos observarlo más claramente a continuación.

1<div class='card text-center'>
2 <!-- Justo aqui tenemos la propiedad loading -->
3 <img loading='lazy' class='image' src="${image.download_url}" alt='...' >
4</div>

De esta manera ya tenemos Lazy load nativo, solo con una propiedad, y podemos observar el comportamiento en este ejemplo. Verás que las imágenes se irán descargando conforme al scroll que realicemos.

2. NPM

La segunda forma de utilizar Lazy load es mediante NPM, solo basta con buscar Lazy load y encontraremos un sin fin de librerías que nos ayudarán a utilizar Lazy load.

Una de ella es yall.js (Yet Another Lazy Loader)

3. JavaScript

Claro, si somos una persona que desayuna y respira JavaScript, no será un problema crear nuestro propio Lazy load y si somos bastante buenos, incluso podemos compartir nuestro Lazy load en NPM.

Así que sin más, esto es todo, ¿qué te parece esta técnica para mejorar el rendimiento de tu página? ¿Crees que todas las páginas deban de utilizarlo? ¿Lo utilizarás? Cuéntame en los comentarios. Nos vemos en un próximo artículo 👋.

¿Quieres aprender JavaScript y crear tu propio Lazy load? Toma nuestro curso 💻 ed.team/cursos/javascript, te enseñaremos desde cero y gratis 🎁. Cursos de JavaScript gratis

Autor del artículo

Avatar

Otoniel Ramos

@tonyraVer perfil

Comentarios de los usuarios

Recuerda iniciar sesión para comentar este articulo