Carga diferida de imágenes - ¿Qué es y cómo hacerlo?
Este tutorial abarca los siguientes temas:
Las imágenes son una parte clave de cualquier sitio web. Sin embargo, también pueden afectar significativamente la velocidad de carga de la página, especialmente en aplicaciones con muchas imágenes. Esto es importante ya que los sitios web más rápidos ofrecen una mejor experiencia de usuario y se posicionan mejor en los motores de búsqueda.
Una forma de optimizar la carga de imágenes es mediante el uso de lazy loading, una técnica que mejora el rendimiento sin comprometer la calidad visual.
En este artículo, aprenderás qué es el lazy loading, cómo funciona y cómo implementarlo en tu sitio web. También exploraremos las mejores prácticas de lazy loading y los errores comunes a evitar.
Este método mejora la velocidad de la página, reduce la cantidad de datos transferidos y minimiza la carga tanto en el dispositivo del usuario como en el servidor.
Al necesitar menos recursos de entrada, el lazy loading proporciona una experiencia de navegación más fluida, especialmente en dispositivos móviles o cuando se tiene una conexión de red más lenta.
El lazy loading se usa comúnmente para imágenes, pero también puede aplicarse a videos, iframes y otros contenidos multimedia.
Cómo funciona el Lazy Loading
El lazy loading funciona retrasando la solicitud del navegador para ciertos recursos hasta que están a punto de mostrarse en la pantalla.
Cuando un usuario abre una página web, solo las imágenes visibles se cargan inmediatamente. Las solicitudes de carga de otras imágenes solo se envían si el usuario se desplaza hacia abajo.
El proceso generalmente involucra estos pasos:
- Carga inicial de la página: El navegador carga el contenido esencial de la página y las imágenes visibles.
- Imágenes de marcador de posición: Las imágenes no visibles se reemplazan con marcadores de posición ligeros o etiquetas de imagen vacías.
- Interacción del usuario: A medida que el usuario se desplaza o interactúa con la página, el navegador detecta cuando una imagen está a punto de entrar en vista.
- Carga de imágenes: El archivo de imagen real se carga desde el servidor solo cuando la imagen está cerca o dentro del área visible.
El lazy loading se puede implementar usando atributos HTML, JavaScript o plugins, todos los cuales exploraremos en las siguientes secciones.
Cómo implementar el Lazy Loading
Hay varias formas de implementar el lazy loading en un sitio web, dependiendo de la configuración del sitio y tus habilidades técnicas.
Los métodos más comunes incluyen el uso de atributos HTML nativos, soluciones JavaScript y funciones integradas en plataformas CMS como WordPress.
1. Lazy Loading en WordPress
WordPress facilita la implementación del lazy loading, incluso sin conocimientos de programación.
1.1. Lazy Loading Automático
Por defecto, WordPress añade automáticamente el atributo loading=”lazy” a las imágenes insertadas a través del editor de bloques o usando la función wp_get_attachment_image().
Esta función automática mejora el rendimiento sin requerir configuración adicional.
1.2. A través de plugins
Para opciones de lazy loading más avanzadas, puedes usar plugins de WordPress. Los plugins populares ofrecen características adicionales como animaciones de carga, exclusiones de CSS y lazy loading para imágenes de fondo.

Para habilitar el lazy loading con el plugin SiteGround Speed Optimizer:
- Ve a tu panel de control de WordPress.
- Navega a Speed Optimizer > Media.

- Activa la opción Lazy Load Media.

2. Usando atributos HTML nativos
Los navegadores modernos soportan el lazy loading nativo a través del atributo loading=”lazy” en HTML.
Este método es la forma más sencilla de añadir lazy loading sin escribir código adicional.
Ejemplo:
<img src="image.jpg" alt="Example Image" loading="lazy">
El atributo loading=”lazy” le dice al navegador que retrase la carga de la imagen hasta que esté a punto de entrar en el área visible.

3. Usando JavaScript
JavaScript proporciona más flexibilidad y control sobre el lazy loading, especialmente para navegadores más antiguos o casos de uso más avanzados.
Dos métodos comunes son LazyLoad.js y la API de Intersection Observer.
3.1. LazyLoad.js
LazyLoad.js es una biblioteca de JavaScript ligera que simplifica el lazy loading para imágenes y otros elementos multimedia. Activa la ejecución de la función de lazy loading solo cuando las imágenes entran en el área visible.
Para usarlo:
- Incluye la biblioteca en tu proyecto:
<script src="https://cdnjs.cloudflare.com/ajax/libs/vanilla-lazyload/17.8.3/lazyload.min.js"></script>
- Reemplaza el atributo src en tus etiquetas de imagen con data-src:
<img data-src="image.jpg" alt="Example Image" class="lazy">
- Inicializa LazyLoad.js con JavaScript:
var lazyLoadInstance = new LazyLoad({
elements_selector: ".lazy"
});

3.2. API de Intersection Observer
La API de Intersection Observer es una característica moderna de JavaScript que detecta cuando los elementos entran o salen del área visible.
Ejemplo:
<img data-src="image.jpg" alt="Example Image" class="lazy">
const lazyImages = document.querySelectorAll(".lazy");
const observer = new IntersectionObserver((entries) => {
entries.forEach((entry) => {
if (entry.isIntersecting) {
const img = entry.target;
img.src = img.dataset.src;
observer.unobserve(img);
}
});
});
lazyImages.forEach((img) => observer.observe(img));

Mejores prácticas para Lazy Loading de imágenes
Implementar lazy loading puede mejorar el rendimiento de tu sitio web, pero seguir las mejores prácticas asegura que la técnica funcione eficazmente sin comprometer la experiencia del usuario o el SEO.
1. Prioriza las imágenes Above-the-Fold
Siempre excluye las imágenes above-the-fold del lazy loading.
Estas son las imágenes que se ven nada más abrir la página y deben cargarse inmediatamente para evitar cambios de diseño y mejorar el rendimiento percibido.
En HTML, simplemente omite el atributo loading=”lazy” para estas imágenes.
2. Usa imágenes placeholder
Mostrar un placeholder mientras la imagen se carga mejora la experiencia visual y previene espacios vacíos. Puedes usar una imagen de baja calidad o un color de fondo sólido como placeholder.
Ejemplo con CSS:
.lazy {
background-color: #f3f3f3; /* Placeholder color */
min-height: 200px; /* Image height */
}
3. Optimiza tamaños y formatos de imágenes
El lazy loading funciona mejor con imágenes optimizadas. Usa formatos modernos como WebP y comprime las imágenes antes de subirlas.
Herramientas como el plugin SiteGround Speed Optimizer pueden convertir automáticamente las imágenes a WebP y optimizar su tamaño.

4. Prueba rendimiento y compatibilidad
Siempre prueba el lazy loading en diferentes dispositivos y navegadores para verificar la compatibilidad.
Herramientas como Google PageSpeed Insights o Lighthouse pueden ayudar a medir las mejoras de rendimiento.
5. Combina Lazy Loading con otras técnicas de optimización
El lazy loading funciona mejor junto a otras optimizaciones de rendimiento como:
Los usuarios de SiteGround pueden aplicar fácilmente estas optimizaciones usando el plugin Speed Optimizer y las funciones integradas en su panel de Site Tools.
Errores comunes de Lazy Loading y cómo evitarlos
Aunque el lazy loading mejora el rendimiento, una implementación incorrecta puede causar problemas que afectan negativamente la experiencia del usuario y el SEO.
Aquí hay algunos errores comunes y cómo solucionarlos.
1. Lazy Loading para imágenes Above-the-Fold
El lazy loading de imágenes en la parte superior de la página web puede causar retrasos en la renderización del contenido y cambios de diseño. Esto hace que tu sitio se sienta lento.
✅ Solución: Excluye las imágenes above-the-fold del lazy loading eliminando el atributo loading=”lazy” de las imágenes clave, como logotipos, la imagen de cabecera y miniaturas destacadas.
2. No proporcionar dimensiones de imagen
Si no se establecen las dimensiones de la imagen, el navegador no sabe cuánto espacio reservar, lo que lleva a cambios de contenido a medida que las imágenes se cargan.
✅ Solución: Siempre define los atributos de ancho y alto para las imágenes para prevenir cambios de diseño.
<img src="image.jpg" alt="Example Image" width="600" height="400" loading="lazy">
3. Lazy Loading para imágenes críticas en sliders o fondos
Las imágenes dentro de sliders o establecidas como imágenes de fondo en CSS pueden no activar el lazy loading correctamente, causando retrasos en la visualización del contenido.
✅ Solución: Pre-carga las imágenes críticas del slider y usa lazy loading basado en JavaScript para controlar cuándo se aplica la propiedad de imagen de fondo real.
Ejemplo de uso de la propiedad de imagen de fondo en CSS:
.lazy-bg {
background-image: url("placeholder.jpg");
}
.lazy-bg.loaded {
background-image: url("real-image.jpg");
}
Ejemplo en JavaScript:
document.querySelectorAll('.lazy-bg').forEach(el => {
el.classList.add('loaded');
});
4. Uso excesivo de JavaScript para Lazy Loading
Aunque las soluciones de lazy loading basadas en JavaScript ofrecen flexibilidad, su uso excesivo aumenta el uso de recursos y puede no funcionar en todos los navegadores.
✅ Solución: Usa lazy loading nativo de HTML (loading=”lazy”) siempre que sea posible. Usa soluciones basadas en JavaScript solo cuando se necesite más control.
5. Olvidar consideraciones de SEO y accesibilidad
Las imágenes cargadas de forma diferida pueden no ser indexadas correctamente por los motores de búsqueda si carecen de atributos adecuados o ejecución de JavaScript. Además, la falta de atributos alt puede perjudicar la accesibilidad.
✅ Solución:
- Asegúrate de que las imágenes sean descubribles por los motores de búsqueda usando elementos img adecuados en lugar de imágenes de fondo para contenido importante.
- Siempre incluye atributos alt significativos para lectores de pantalla.
<img src="product.jpg" alt="Red running shoes" loading="lazy">
Seguir estas mejores prácticas te ayudará a evitar problemas comunes de lazy loading mientras aseguras una experiencia fluida para los usuarios y los motores de búsqueda.
Puntos clave sobre Lazy Loading de imágenes
El lazy loading es una técnica poderosa que mejora el rendimiento del sitio web al retrasar la carga de imágenes hasta que sean necesarias. Reduce los tiempos de carga iniciales de la página, ahorra ancho de banda y mejora la experiencia del usuario, especialmente en dispositivos móviles y conexiones más lentas.
En esta guía, cubrimos:
- Qué es el lazy loading y cómo funciona
- Diferentes métodos de implementación, incluyendo atributos HTML, JavaScript y plugins de WordPress
- Mejores prácticas para un rendimiento óptimo
- Errores comunes y cómo evitarlos
Para los usuarios de WordPress, el plugin SiteGround Speed Optimizer ofrece una manera fácil de habilitar el lazy loading junto con otras optimizaciones de rendimiento.
Siguiendo los consejos descritos en este artículo, puedes acelerar significativamente tu sitio sin comprometer la calidad del contenido.
