Interaction to Next Paint (INP) é uma das métricas de desempenho em destaque que o Google em breve adicionará ao seu conjunto de métricas das Core Web Vitals. A nova métrica INP substituirá a FID em março de 2024 e sua principal função é avaliar a capacidade de resposta das páginas de um site.
Portanto, se o seu objetivo é aprimorar a classificação do seu site nas páginas de resultados de mecanismos de busca, é crucial adquirir conhecimento sobre a INP agora e entender como implementar as melhorias necessárias. Caso contrário, o posicionamento das suas páginas poderá ser afetado quando essa atualização das Core Web Vitals se tornar oficial.
Neste post, nos aprofundaremos na métrica INP, abordando tópicos como a diferença em relação a outras métricas das Core Web Vitals e métodos para medir os resultados do seu site, com o objetivo de aprimorar seu desempenho atual. Vamos lá?
Core Web Vitals
Antes de tudo, vamos relembrar: o Core Web Vitals é um conjunto de métricas que avaliam a experiência real do usuário desde o desempenho de carregamento da página, à interatividade e à estabilidade visual.
Atualmente, o Core Web Vitals possui três métricas principais:
- Largest Contentful Paint (LCP): avalia o desempenho do carregamento. Aqui, entende-se que um site que oferece uma boa experiência ao usuário precisa carregar o maior elemento em até 2,5 segundos desde o início do carregamento da página;
- First Input Delay (FID): esta métrica avalia a interatividade (e será substituida pela INP). Até então, para oferecer uma boa experiência ao usuário, a FID deve ter menos de 100 milissegundos;
- Cumulative Layout Shift (CLS): avalia a estabilidade visual. Para oferecer uma boa experiência ao usuário, esta métrica precisa ser inferior a 0,1.
O que é Interaction to Next Paint (INP) do Google?
A Interaction to Next Paint (INP) é uma métrica que será adicionada em breve aos relatórios das Core Web Vitals do Google, com o objetivo de medir o tempo de resposta das páginas de um site.
A INP vai mostrar a velocidade com que a página se atualiza quando o visitante interage com ela — por exemplo, quando o visitante clica em um link ou em um botão.
Os dados de uso do Chrome mostram que 90% do tempo de um usuário em uma página é gasto após o carregamento. Por isso, é importante medir a capacidade de resposta com cuidado em todo o ciclo de vida da página. É isso que a métrica INP avalia. (…) O objetivo do INP é garantir que o tempo entre o início da interação de um usuário e a exibição do próximo frame seja o mais curto possível para todas ou a maioria das interações do usuário. Fonte: Google Web Dev
A métrica INP, portanto, é valiosa para entender e melhorar a capacidade de resposta de um site às ações dos usuários, contribuindo para uma experiência mais eficiente e satisfatória.
Como a Interaction to Next Paint (INP) Funciona?
Mais especificamente, INP se concentra na medição de atrasos no tempo de resposta da página. Isso permite aos desenvolvedores e proprietários de sites entenderem melhor a eficácia e a agilidade das respostas do site às interações dos usuários, com o objetivo de otimizar sua experiência.
Em resumo, funciona da seguinte forma:
- O visitante interage com a página de um site, por exemplo, clicando em um botão;
- O navegador do visitante envia uma solicitação ao servidor, solicitando o carregamento do novo conteúdo;
- O servidor envia o novo conteúdo de volta ao navegador do visitante;
- O navegador realiza a renderização do novo conteúdo na página;
- O navegador mede o tempo necessário para renderizar o novo conteúdo, e essa informação é apresentada ao proprietário do site como a pontuação de INP;
- Quando a pontuação de INP é baixa, isso indica que o navegador renderizou o novo conteúdo rapidamente, demonstrando alta responsividade da página às interações dos visitantes.
Como INP é calculado?
A métrica Interaction to Next Paint (INP) é calculada pela observação de todas as interações feitas com uma página. Por isso, é interessante sempre buscar eliminar o excesso de recursos que tornem a página mais “pesada” ou “lenta” nas respostas das interações. Veja porque:
Uma interação é um grupo de manipuladores de eventos que são acionados durante o mesmo gesto lógico do usuário. Por exemplo, as interações de “toque” em um dispositivo com tela touchscreen incluem vários eventos, como
pointerup
,pointerdown
eclick
. Uma interação pode ser conduzida por JavaScript, CSS, controles de navegador integrados (como elementos de formulário) ou por uma combinação deles. Fonte: Google Web Dev
A INP é expressa em milissegundos (ms). Uma pontuação considerada boa para a INP estaria abaixo de 200 ms. Pontuações entre 200 ms e 500 ms indicam a necessidade de melhorias, enquanto uma pontuação de 500 ms ou mais é considerada inadequada.
Vários fatores podem influenciar a pontuação da INP, incluindo o tamanho e a complexidade da página, bem como o número de arquivos JavaScript e CSS que o navegador precisa carregar.
Para medir a pontuação da INP do seu site, você pode recorrer a ferramentas como o Google PageSpeed. Ele realiza uma análise detalhada e oferece um relatório abrangente sobre a saúde do seu site, além de fornecer orientações para a otimização das suas páginas tanto em computadores, quanto em dispositivos móveis.
Por que a métrica FID está sendo substituida pela INP?
O Google anunciou que a partir de 2024, a métrica Interaction to Next Paint (INP) substituirá a métrica atual conhecida como First Input Delay (FID). Embora a INP e o FID tenham algumas semelhanças, elas medem aspectos distintos.
A FID foi uma das principais métricas da Web desde 2020, oferecendo uma nova maneira de medir a capacidade de resposta das páginas de um site sob o ponto de vista da experiência do usuário. Ou seja, foi criada para avaliar como “usuários reais” interagiam com as páginas e, assim, verificar o nível de qualidade para eles.
No entanto, a FID encontrou limitações, tendo em vista que só informa a capacidade de resposta da “primeira interação” do usuário com a página, medindo o atraso da primeira resposta (tempo que o nagevador precisou aguardar).
O FID avalia a velocidade de resposta da página apenas quando um visitante abre o site pela primeira vez. Por outro lado, a nova métrica INP medirá a velocidade de resposta após cada interação do visitante, durante todo o período em que ele permanece no site.
Portanto, a métrica INP é muito mais abrangente que a FID.
Como melhorar a pontuação de Interaction to Next Paint (INP) no seu site
Vamos agora destacar maneiras de aprimorar a pontuação de INP no seu site segundo as orientações do Google. É importante observar que a maioria dos métodos descritos requer algum conhecimento técnico. Antes de efetuar quaisquer alterações no seu site, certifique-se de realizar um backup dos seus arquivos.
1. Descubra o que está causando uma INP ruim
Se a INP está ruim ou precisa de melhorias (vide como o INP é calculado acima, neste artigo), você precisa de dados antes de partir para a ação de tentar corrigir as interações lentas. Com essas informações, você pode encontrar uma solução. Vamos a elas:
2. Encontrar interações lentas
O ideal é que você comece com os dados de campo para otimizar o INP. Os dados de campo de um provedor de monitoramento de usuários reais fornecem o valor de INP e também dados que destacam qual interação específica foi responsável pelo valor de INP em si. Com isso, é possível saber, ao menos, se a interação ocorreu durante ou após o carregamento da página e qual o tipo de interação a melhorar.
3. Otimizar interações
Depois de identificar uma interação lenta, a próxima etapa é a otimização. Essas interações podem ser divididas em três fases que, somadas, correspondem à latência total de interação:
- O atraso de entrada, que inicia quando o usuário começa uma interação com a página e só termina quando os callbacks do evento da interação começam a ser executados;
- O tempo de processamento, que significa o tempo para que os callbacks sejam executados até sua conclusão;
- O atraso da apresentação, que é o tempo que o navegador leva para apresentar o próximo frame que contém o resultado visual da interação.
4. Identificar e reduzir o atraso de entrada
Os atrasos de entrada podem ser consideráveis devido a atividades que ocorrem na linha de execução principal como análise e compilação de scripts, processamento de busca, funções de timer ou apor outras interações que ocorrem em rápida sucessão e sobreposição entre si.
Seja qual for a origem do atraso de entrada de uma interação, reduza isso ao mínimo para que os callbacks de eventos sejam executados o mais rápido possível.
5. Evitar a troca frequente de layouts
A troca frequente de layouts, é um problema de renderização em que o layout ocorre de forma síncrona. Isso ocorre quando você atualiza estilos em JavaScript e os lê na mesma tarefa. Há várias propriedades no JavaScript que podem causar esse problema:
Todas as propriedades ou métodos abaixo, quando solicitados/chamados em JavaScript, acionarão o navegador para calcular de forma síncrona o estilo e o layout. Isso também é chamado de refluxo e é um gargalo de desempenho comum:
- elem.offsetLeft, elem.offsetTop, elem.offsetWidth, elem.offsetHeight,elem.offsetParent
- elem.clientLeft, elem.clientTop, elem.clientWidth,elem.clientHeight
- elem.getClientRects(),elem.getBoundingClientRect()
- elem.scrollBy(),elem.scrollTo()
- elem.scrollIntoView(),elem.scrollIntoViewIfNeeded()
- elem.scrollWidth,elem.scrollHeight
- elem.scrollLeft, elem.scroll
- elem.focus()
- elem.computedRole,elem.computedName
- elem.innerText
- window.scrollX,window.scrollY
- window.innerHeight,window.innerWidth
- window.visualViewport.height/largura/offsetTop/offsetLeft
- document.scrollingElement
- document.elementFromPoint
- inputElem.focus()
- inputElem.select(),textareaElem.select()
- mouseEvt.layerX, mouseEvt.layerY, mouseEvt.offsetX, mouseEvt.offsetY
- window.getComputedStyle()
- window.getComputedStyle()
- range.getClientRects(),range.getBoundingClientRect()
- SVGLocalizável: computeCTM(),getBBox()
- SVGTextConteúdo: getCharNumAtPosition(), getComputedTextLength(), getEndPositionOfChar(), getExtentOfChar(), getNumberOfChars(), getRotationOfChar(), getStartPositionOfChar(), getSubStringLength(),selectSubString()
A lista completa e mais informações sobre os itens acima podem ser vistas aqui (Github).
6. Otimização da execução do JavaScript
O JavaScript é um componente fundamental em muitas páginas de site, permitindo a incorporação de elementos interativos. No entanto, ele também pode impactar negativamente o desempenho da página.
Quando o JavaScript é executado, ele é processado na thread principal, que é responsável pela renderização das páginas. Se o código JavaScript for ineficiente, pode bloquear a thread e impedir que a página responda às interações dos visitantes.
Para melhorar a responsividade da sua página, é fundamental otimizar o JavaScript. Isso pode ser feito de várias maneiras:
- Minificação de arquivos JavaScript: Reduza o tamanho dos arquivos JavaScript para acelerar o carregamento;
- Ativação da compactação GZip: Este método reduz o tamanho dos arquivos e dados do site;
- Uso de um framework JavaScript: Frameworks como AngularJS e jQuery podem ajudar a organizar e otimizar o código JavaScript;
- Utilização de uma Rede de Distribuição de Conteúdo (CDN): As CDNs armazenam arquivos JavaScript em servidores próximos ao público-alvo, melhorando o tempo de carregamento das páginas.
7. Divida processos longos em tarefas menores
Dividir tarefas extensas de JavaScript em tarefas menores é uma estratégia eficaz para evitar o bloqueio da thread principal do navegador.
Considere um exemplo: um visitante está explorando as páginas de uma loja virtual. Se as tarefas longas de JavaScript não forem divididas, a thread principal será sobrecarregada, tendo que buscar, processar e renderizar grandes volumes de dados e imagens de produtos simultaneamente. Isso consome tempo e recursos significativos.
Durante esse processo, a thread principal fica ocupada, resultando em um carregamento lento e na incapacidade de responder à próxima interação do usuário. Ao dividir essas tarefas longas em tarefas menores, o navegador pode lidar com elas de forma sequencial, garantindo que a thread principal fique desocupada para priorizar tarefas mais críticas.
Existem dois métodos principais para dividir tarefas longas em tarefas menores:
- setTimeout: Esta função nativa do JavaScript permite programar a execução de tarefas após um atraso específico em milissegundos, evitando que a thread principal seja bloqueada por um longo período.
- requestIdleCallback: Esta API oferece uma abordagem mais eficiente, assegurando que funções sejam executadas durante períodos ociosos e permitindo o controle do prazo para a conclusão da tarefa, sem prejudicar processos críticos.
8. Priorize a agilidade de resposta do site
A agilidade de resposta, também conhecida como “input readiness”, descreve o estado de uma página quando ela está pronta para responder às interações do usuário. Isso ocorre quando a thread principal do navegador não está ocupada com outras tarefas.
Aqui estão estratégias para priorizar a agilidade de resposta nas páginas e, consequentemente, aprimorar a INP:
- Adiar tarefas de JavaScript não essenciais: Algumas tarefas de JavaScript não são críticas para o carregamento inicial da página e podem ser adiadas para execução após o carregamento do conteúdo principal. Isso permite que a thread principal dê prioridade às interações do usuário, melhorando a capacidade geral de resposta da página.
- Throttling: Esta técnica controla a frequência de execução de uma função. Por exemplo, quando os visitantes rolam a página, a mesma função pode ser acionada várias vezes por segundo. O throttling garante que a função seja executada com menos frequência, como uma vez a cada milissegundo, independentemente de quantas vezes o evento seja acionado.
- Debounce: O debounce garante um período de espera entre duas execuções da mesma função. Por exemplo, quando os visitantes redimensionam a janela do navegador, essa ação pode acionar o mesmo processo repetidamente. O debounce atrasa a execução da função até que tenha ocorrido um intervalo específico após a conclusão do redimensionamento.
- Utilização de Listeners de Eventos (Passivos): Os listeners são construções de programação que identificam eventos, como rolagens de página e toques. Quando um listener é configurado como passivo, ele instrui o navegador a continuar processando outras tarefas enquanto uma função específica está em execução.
6 motivos para manter o WordPress atualizado (a começar pela segurança)
5. Informe ao usuário que a ação está sendo processada enquanto ele aguarda
É comum que um site leve um tempo para responder a certas interações do usuário, o que pode fazer com que o visitante pense que a página parou de funcionar. Nesse contexto, é essencial comunicar ao visitante que a página está ativa e que a ação solicitada está em processo.
Uma abordagem eficaz é exibir uma mensagem na tela, como “Aguarde, por favor” ou “Estamos processando sua solicitação”. Essa informação imediata tranquiliza o usuário, indicando que a página recebeu a solicitação e que o processamento está em andamento.
Surpreendentemente, a exibição desse tipo de mensagem pode criar a percepção de que o site é mais ágil, mesmo que a mensagem em si não reduza o tempo real de processamento.
Aqui estão algumas maneiras de mostrar ao visitante que a solicitação está sendo processada:
- Indicadores de Carregamento: Você pode utilizar um indicador de carregamento, como um spinner (o círculo que gira enquanto aguardamos o carregamento de uma página ou vídeo) ou uma barra de progresso. Isso funciona especialmente bem quando o usuário está à espera de ser redirecionado para outra página ou aguarda o carregamento de conteúdo de mídia.
- Pop-ups de Confirmação de Ação: Se a ação solicitada pelo visitante envolve, por exemplo, a adição de um produto ao carrinho, é uma boa prática exibir uma mensagem na tela confirmando que a ação foi concluída com sucesso.
- Avisos de Erro em Formulários: Quando um usuário está preenchendo um formulário, é benéfico mostrar avisos de erro imediatamente. Por exemplo, se o usuário insere um endereço de e-mail no formato incorreto, a página deve exibir uma mensagem de erro à medida que ele digita as informações, em vez de esperar até que o formulário seja enviado. Isso proporciona feedback imediato e melhora a experiência do usuário.
Essas estratégias ajudam a manter os visitantes informados sobre o andamento das ações que eles desencadearam, reduzindo a frustração e melhorando a impressão geral da velocidade do site.
Concluindo, melhorar a métrica Interaction to Next Paint (INP) é crucial para proporcionar uma experiência positiva aos visitantes do site, melhorar a classificação nos resultados de pesquisa e alcançar um desempenho web excepcional.
Portanto, a compreensão e a implementação adequada dessa métrica são essenciais para proprietários de sites que desejam atender às expectativas dos usuários e atingir seus objetivos de tráfego e conversão.
Gostou deste artigo? Deixe-nos a sua opinião nos comentários! Não esqueça de se inscrever na nossa newsletter gratuita para receber conteúdos que te manterão sempre atualizado sobre marketing e SEO.
Ótimo conteúdo! Fiquei impressionada com a importância da INP e como ela vai impactar diretamente na experiência do usuário. Saber que essa métrica será fundamental nas Core Web Vitals destaca ainda mais a necessidade de otimizar a interação dos usuários com as páginas. Acho excelente que o artigo traga dicas práticas para melhorar essa métrica desde já, garantindo que os sites estejam preparados para futuras atualizações. Parabéns por abordar um tema tão relevante!