Puedes precargar imágenes responsivas, lo que puede hacer que tus imágenes se carguen mucho más rápido, ya que ayuda al navegador a identificar la imagen correcta de un srcset
antes de renderizar la etiqueta img
.
Descripción general de las imágenes responsivas
Supongamos que navegas por la Web en una pantalla de 300 píxeles de ancho y la página solicita una imagen de 1, 500 píxeles de ancho. Esa página desperdició muchos datos móviles porque tu pantalla no puede hacer nada con toda esa resolución adicional. Idealmente, el navegador recuperaría una versión de la imagen que es solo un poco más ancha que el tamaño de la pantalla, por ejemplo, 325 píxeles. Esto garantiza una imagen de alta resolución sin desperdiciar datos y permite que la imagen se cargue más rápido.
Las imágenes responsivas permiten que los navegadores recuperen diferentes recursos de imágenes para diferentes dispositivos. Si no usas una CDN de imágenes, guarda varias dimensiones para cada imagen y especifícalas en el atributo srcset
. El valor w
le indica al navegador el ancho de cada versión, de modo que pueda elegir la versión adecuada para cualquier dispositivo:
<img src="small.jpg" srcset="small.jpg 500w, medium.jpg 1000w, large.jpg 1500w" alt="…">
Descripción general de la precarga
La precarga te permite informar al navegador sobre recursos críticos que deseas cargar lo antes posible, antes de que se descubran en el HTML. Esto es especialmente útil para los recursos que no se pueden descubrir fácilmente, como las fuentes incluidas en las hojas de estilo, las imágenes de fondo o los recursos cargados desde una secuencia de comandos.
<link rel="preload" as="image" href="important.png">
imagesrcset
y imagesizes
El elemento <link>
usa los atributos imagesrcset
y imagesizes
para precargar imágenes responsivas. Úsalos junto con <link rel="preload">
, con la sintaxis srcset
y sizes
que se usa en el elemento <img>
.
Por ejemplo, si quieres cargar previamente una imagen responsiva especificada con lo siguiente:
<img src="wolf.jpg" srcset="wolf_400px.jpg 400w, wolf_800px.jpg 800w, wolf_1600px.jpg 1600w" sizes="50vw" alt="A rad wolf">
Para ello, agrega lo siguiente a <head>
de tu HTML:
<link rel="preload" as="image" href="wolf.jpg" imagesrcset="wolf_400px.jpg 400w, wolf_800px.jpg 800w, wolf_1600px.jpg 1600w" imagesizes="50vw">
Esto inicia una solicitud con la misma lógica de selección de recursos que usan srcset
y sizes
.
Casos de uso
A continuación, se incluyen algunos casos de uso para la carga previa de imágenes responsivas.
Precarga imágenes responsivas insertadas de forma dinámica
Imagina que cargas de forma dinámica imágenes de héroe como parte de una presentación de diapositivas y sabes qué imagen se mostrará primero. En ese caso, probablemente quieras mostrar esa imagen lo antes posible y no esperar a que el script de la presentación de diapositivas la cargue.
Puedes inspeccionar este problema en un sitio web con una galería de imágenes cargada de forma dinámica:
- Abre esta demostración de presentación de diapositivas en una pestaña nueva.
- Presiona
Control+Shift+J
(oCommand+Option+J
en Mac) para abrir DevTools. - Haga clic en la pestaña Red.
- En la lista desplegable Throttling, selecciona Fast 3G.
- Inhabilita la casilla de verificación Inhabilitar la caché.
- Vuelve a cargar la página.

Usar preload
aquí permite que la imagen comience a cargarse con anticipación, de modo que pueda estar lista para mostrarse cuando el navegador necesite hacerlo.

Para ver la diferencia que genera la precarga, inspecciona la misma galería de imágenes cargadas de forma dinámica, pero con la primera imagen precargada. Para ello, sigue los pasos del primer ejemplo.
Precarga imágenes de fondo con image-set
Si tienes diferentes imágenes de fondo para diferentes densidades de pantalla, puedes especificarlas en tu CSS con la sintaxis image-set
. Luego, el navegador puede elegir cuál mostrar según el DPR de la pantalla.
background-image: image-set( "cat.png" 1x, "cat-2x.png" 2x);
El problema con las imágenes de fondo de CSS es que el navegador las descubre solo después de descargar y procesar todo el CSS en el <head>
de la página.
Puedes inspeccionar este problema en un sitio web de ejemplo con una imagen de fondo adaptable.

La precarga de imágenes responsivas te permite cargar esas imágenes más rápido.
<link rel="preload" as="image" imagesrcset="cat.png 1x, cat-2x.png 2x">
Si omites el atributo href
, puedes asegurarte de que los navegadores que no admiten imagesrcset
en el elemento <link>
, pero sí admiten image-set
en CSS, descarguen el código fuente correcto. Sin embargo, en este caso, no se beneficiarán de la precarga.
Puedes inspeccionar cómo se comporta el ejemplo anterior con una imagen de fondo adaptable precargada en la demostración de precarga de fondo adaptable.

Efectos prácticos de la precarga de imágenes responsivas
En teoría, precargar tus imágenes responsivas puede acelerarlas, pero ¿qué sucede en la práctica?
Para responder esa pregunta, creé dos copias de una tienda PWA de demostración: una que no precarga imágenes y otra que precarga algunas de ellas. Dado que el sitio carga las imágenes de forma diferida con JavaScript, es probable que se beneficie de la precarga de las que aparecen en la ventana gráfica inicial.
Esto produjo los siguientes resultados para sin precarga y para precarga de imágenes:
- Start Render se mantuvo igual.
- El Índice de velocidad mejoró ligeramente (273 ms, ya que las imágenes llegan más rápido y no ocupan una gran parte del área de píxeles).
- Last Painted Hero mejoró significativamente en 1.2 segundos.

Precarga y <picture>
El Grupo de trabajo de rendimiento web está analizando la posibilidad de agregar un equivalente de precarga para srcset
y sizes
, pero no para el elemento <picture>
, que controla el caso de uso de la "dirección de arte".
Aún hay varios problemas técnicos que resolver para la precarga de <picture>
, pero, mientras tanto, existen soluciones alternativas:
<picture>
<source srcset="small_cat.jpg" media="(max-width: 400px)">
<source srcset="medium_cat.jpg" media="(max-width: 800px)">
<img src="large_cat.jpg">
</picture>
La lógica de selección de la fuente de imagen del elemento <picture>
revisa los atributos media
de los elementos <source>
en orden, encuentra el primero que coincide y usa el recurso adjunto.
Dado que la precarga adaptable no tiene una noción de "orden" o "primera coincidencia", deberás traducir los puntos de interrupción en algo similar a lo siguiente:
<link rel="preload" href="small_cat.jpg" as="image" media="(max-width: 400px)">
<link rel="preload" href="medium_cat.jpg" as="image" media="(min-width: 400.1px) and (max-width: 800px)">
<link rel="preload" href="large_cat.jpg" as="image" media="(min-width: 800.1px)">
Precarga y type
El elemento <picture>
también admite la coincidencia en el primer type
para permitirte proporcionar diferentes formatos de imagen, de modo que el navegador pueda elegir el primer formato de imagen que admita. Este caso de uso no es compatible con la carga previa.
En el caso de los sitios que usan la coincidencia de tipos, recomendamos evitar la carga previa y, en su lugar, hacer que el analizador de carga previa tome las imágenes de los elementos <picture>
y <source>
. De todos modos, esta es una práctica recomendada, en especial cuando se usa Fetch Priority para ayudar a priorizar la imagen adecuada.
Efectos en el Largest Contentful Paint (LCP)
Dado que las imágenes pueden ser candidatas para el Largest Contentful Paint (LCP), precargarlas puede mejorar el LCP de tu sitio web.
Independientemente de si la imagen que precargas es adaptable, las precargas funcionan mejor cuando el recurso de imagen no se puede detectar en la carga útil de marcado inicial. También obtendrás una mayor mejora del LCP en los sitios que renderizan el lenguaje de marcado en el cliente que en los sitios que envían el lenguaje de marcado completo desde el servidor.