Os navegadores usam heurísticas para atribuir prioridades de carregamento às imagens, mas esses padrões nem sempre se alinham com a Largest Contentful Paint (LCP) da sua página.
Usar fetchpriority em um elemento <img> permite sinalizar explicitamente a importância de uma imagem para o navegador, garantindo que as imagens críticas sejam carregadas mais rapidamente, enquanto as não essenciais não competem por largura de banda.
O atributo loading=lazy impede que as imagens sejam baixadas quando estão fora da tela, o que pode ajudar a priorizar as imagens.
Como fazer a implementação
- Identifique a imagem da LCP: determine qual imagem é a candidata mais provável para a Largest Contentful Paint (geralmente a imagem principal na parte de cima da página).
- Aumente a prioridade da LCP: adicione
fetchpriority="high"ao elemento<img>do candidato à LCP. - Remova a prioridade de imagens não críticas: para imagens que fazem parte de uma interface secundária ou que só são reveladas após a interação do usuário (como megamenus, modais ou slides de carrossel fora da tela), adicione
fetchpriority="low". - Otimize o carregamento lento: nunca use
loading="lazy"na imagem da LCP. Para imagens padrão abaixo da dobra,loading="lazy"é suficiente para adiar a solicitação até que o usuário role a página para perto delas. Evite adicionarfetchpriority="low"a essas imagens, porque elas precisam ser carregadas com prioridade normal quando o usuário rolar até elas. Reservefetchpriority="low"para imagens que estão tecnicamente "acima da dobra", mas não estão visíveis inicialmente (por exemplo, slides de carrossel ocultos ou megamenus). Para essas imagens ocultas, também é aceitável usarloading="lazy". O navegador vai processar o tempo da solicitação respeitando a baixa prioridade. - Prefira as prioridades padrão: se uma imagem tiver prioridade de carregamento normal, omita o atributo
fetchpriorityem vez de defini-lo comoauto. Essa é uma convenção estilística para manter o HTML mais limpo, usando as heurísticas nativas do navegador.
Exemplo de código
<!-- Elevate priority for the LCP image -->
<img src="/images/hero-lcp.jpg"
alt="Main Banner"
fetchpriority="high"
width="800" height="400">
<!-- Deprioritize initially hidden images above the fold -->
<!-- Additionally use `loading="lazy"` if there are likely to be many images-->
<div class="carousel">
<img src="/images/gallery-alt.jpg"
alt="Gallery Image 1"
width="400" height="300">
<img src="/images/gallery-alt.jpg"
alt="Gallery Image 2"
fetchpriority="low"
loading="lazy"
width="400" height="300">
<div>
<!-- Deprioritize images revealed only after user interaction -->
<img src="/images/mega-menu-promo.jpg"
alt="Special Offer"
fetchpriority="low"
width="300" height="150">
<!-- Use lazy loading ALONE for standard below-the-fold images -->
<img src="/images/footer-logo.png"
alt="Footer Logo"
loading="lazy"
width="120" height="60">
<!-- Omit fetchpriority for images with standard priority -->
<img src="/images/standard-image.jpg"
alt="Standard Image"
width="400" height="300">
Práticas recomendadas
- OBRIGATÓRIO: sempre aplique
fetchpriority="high"à imagem LCP. - OBRIGATÓRIO: use
fetchpriority="high"em no máximo uma ou duas imagens críticas para evitar a contenção de rede e a diluição do aumento de prioridade. - OBRIGATÓRIO: use
fetchpriority="low"para imagens que estão tecnicamente "acima da dobra", mas inicialmente ocultas (por exemplo, slides de carrossel ocultos, imagens de megamenu). - OBRIGATÓRIO: não use
fetchpriority="low"em imagens padrão abaixo da dobra que já usamloading="lazy". Essas imagens precisam ser carregadas com prioridade normal quando entram na janela de visualização. - RECOMENDADO: evite usar
fetchpriority="auto". Se você quiser a prioridade padrão, omita o atributo para manter o HTML limpo. - NÃO combine
fetchpriority="high"comloading="lazy". - NÃO use o atributo
importancedescontinuado. Ele foi substituído porfetchprioritye não é compatível com nenhum navegador. - NÃO use o valor
loading="auto"descontinuado. Ele era compatível com o Chrome, mas foi removido e não é mais compatível com nenhum navegador.
Estratégia de fallback
O atributo fetchpriority é um aprimoramento progressivo para o elemento <img>. Se um navegador não for compatível com ele, o atributo será ignorado, e o navegador vai usar as heurísticas de prioridade padrão.