Banco de dúvidas

Como usar lazy loading

O lazy loading (ou "carregamento preguiçoso", em tradução livre) é uma forma de otimizar o carregamento de páginas da web, ao baixar recursos (como imagens, vídeos, scripts e outros elementos) apenas quando são necessários, em vez de carregá-los todos de uma vez, que é o comportamento padrão.

Isso reduz o tempo de carregamento da página (importante para SEO) e economiza o consumo de banda, principalmente em sites com muitos elementos visuais.

Lazy loading de imagens e vídeos

Usando o loading="lazy"

Com o atributo "loading" (HTML5) na tag da imagem ou vídeo, é possível definir como os recursos devem ser carregados. Usando o valor "lazy" numa imagem garante que ela só será carregada quando estiver próxima ao à área visível na tela:

<img src="imagem-rodape.png" alt="imagem no rodapé" loading="lazy">

Outros valores possíveis são loading="eager" (carregamento assim que possível, é o comportamento padrão) e loading="auto" (deixar a decisão sobre o carregamento com o browser).

Usando JavaScript

Há várias bibliotecas JavaScript que implementam o lazy loading de imagens, como LazyLoad, Intersection Observer API, etc. Essas bibliotecas monitoram a posição das imagens na página e carregam as que estão próximas ao viewport.

Lazy loading de scripts

Você pode atrasar o carregamento de scripts menos essenciais, permitindo que os elementos principais da página sejam exibidos primeiro.

Carregamento assíncrono

Use o atributo "async" ou o atributo "defer" na tag do script para carregar o script de forma assíncrona, permitindo que a página continue sendo carregada enquanto o script é baixado:

<script src="meu_script_bacana.js" async></script>

<script src="meu_outro_script.js" defer></script>

A diferença entre async e defer é que async executa o script assim que é baixado de forma assíncrona, já o defer aguarda até que todos os recursos da página estejam carregados antes de executar o script.

IMPORTANTE: se o script depende de outros recursos ou scripts carregados anteriormente, é melhor usar o atributo "defer" para evitar conflitos e erros de dependência.

Carregamento condicional

Você pode optar por carregar scripts somente quando forem necessários, por exemplo, após uma interação do usuário ou em uma determinada seção da página:

<script>
    // Verifica se uma condição específica é verdadeira
    if (condicao) {
      const script = document.createElement("script");
      script.src = "meu_script_bacana.js";
      document.body.appendChild(script);
    }
</script>

Lazy loading de conteúdo abaixo do fold

Esse é o carregamento tardio não só de imagens, scripts e outros recursos, mas do próprio conteúdo da página à medida em que o usuário vai rolando para baixo. Um exemplo disso é uma página de produto em certas lojas virtuais: avaliações de compradores e produtos sugeridos podem ser carregados para aparecer apenas quando visíveis. Outro exemplo é o carregamento dinâmico de posts ao rolar pelo feed do Facebook ou Instagram.

Isso é possível com bibliotecas JavaScript como LazyLoad, Intersection Observer API, lozad.js, lazysizes, yall.js ou Layzr.js, entre outras, ou frameworks como React, Angular, etc. Escolha a tecnologia que melhor atenda as suas necessidades e se integra ao seu projeto.

Lembre-se de que a implementação específica do lazy loading dependerá do ambiente e das necessidades do seu site. É sempre uma boa prática verificar a compatibilidade com browsers mais antigos e fazer testes para garantir que a funcionalidade seja bem-sucedida em diferentes cenários.

Este artigo foi útil para você?