Melhorando o desempenho da sua página com o atributo loading=lazy
Os atributo loading introduziu nos navegadores mais modernos a capacidade de adiar um carregamento de uma imagem ou um iframe, o que impacta diretamente na performance, tornando o carregamento de uma página web mais otimizada.
Vejamos alguns detalhes sobre esse atributo.
Como funciona o atributo loading?
O novo atributo loading define como o navegador deve se comportar quanto ao carregamento de um conteúdo, especificamente das tags <img> e <iframe>. As opções possíveis para esse atributo são lazy ou eager.
eagerdefine que o conteúdo deve ser carregado imediatamente.lazyadia o carregamento da imagem até que atinja uma distância calculada da janela de visualização, conforme definido pelo navegador.
Nesse tutorial, vamos falar especificamente da opção lazy.
Como funciona a opção "lazy" no atributo loading?
O atributo loading com o valor lazy faz com que a imagem (carregada pela tag <img>) ou um iframe só seja carregado caso mesma esteja na viewport do usuário.
Em outras palavras, ele especifica para o navegador que o carregamento das tags <img> ou <iframe> serão adiados até que o usuário faça a rolagem para onde esses elementos se tornam visíveis.
A intenção é evitar que a imagem seja carregada até que haja uma certeza razoável de que ela será necessária. Isso geralmente melhora o desempenho do conteúdo na maioria dos casos.
Como utilizar loading=lazy?
Não tem muito segredo. Basta adicionar loading="lazy" na sua tag <img> ou <iframe>.
<img src="minha-imagem.jpg" loading="lazy">
ou:
<iframe src="minha-imagem.jpg" loading="lazy" frameborder="0">
Imagens precisam ter atributos de altura e largura
Mesmo que o navegador carregue uma imagem, ele ainda não sabe imediatamente a altura e largura da mesma, a não ser que você as defina. Para permitir que o navegador reserve espaço suficiente em uma página que possua imagens, é recomendável que todas as tags <img> possuam os atributos width e height. Pois, ao usar loading="lazy", o navegador não as terá carregado ainda, e, se você não especificar as mesmas, poderá ocorrer mudanças no layout do seu site.
Exemplo:
<img src="minha-imagem.png" loading="lazy" width="200" height="200">
É claro que não há problemas ao utilizar o atributo loading="lazy" sem os atributos de dimensão height ou width, porém é recomendado para que não ocorra comportamentos inesperados no seu layout pelo fato do navegador não saber o tamanho das imagens até que estejam no viewport.
Quais são os navegadores compatíveis?
Os navegadores mais modernos, como Egde, Chrome, Firefox e Opera, já possuem suporte total ou parcial ao atributo loading="lazy", conforme podemos ver detalhadamente em caniuse.
Como loading lazy pode afetar navegadores sem suporte?
Se a versão do navegador do usuário não possuir suporte ao atributo loading, não haverá problemas com compatibilidade, já que esse atributo será simplesmente ignorado e não afetará o comportamento padrão já existemente para as tags <img> e <iframe>
Como saber se o navegador tem suporte ao atributo loading?
Você pode utilizar o Javascript para chegar se há suporte ou não ao atributo loading. Basta verificar se HTMLImageElement ou HTMLIframeElement possuem o atributo loading.
Veja:
if (HTMLImageElement.prototype.hasOwnProperty('loading'))
{
console.log('O navegador suporta o atributo "loading" em <img>');
}
if (! HTMLIFrameElement.prototype.hasOwnProperty('loading'))
{
console.log('Não há suporte para "loading" em iframes neste navegador');
}