Notice: A função _load_textdomain_just_in_time foi chamada incorrectamente. O carregamento da tradução para o domínio videopro foi accionado demasiado cedo. Isto é normalmente um indicador de que algum código no plugin ou tema está a ser executado demasiado cedo. As traduções devem ser carregadas na acção init ou mais tarde. Por favor veja Depuração no WordPress para mais informações. (Esta mensagem foi adicionada na versão 6.7.0.) in /var/www/html/wp-includes/functions.php on line 6131
Até que ponto as tarefas do JavaScript afetam o desempenho dos sites – e o que fazer a respeito | Clickio Deprecated: O hook setted_transient está obsoleto desde a versão 6.8.0! Use set_transient em alternativa. in /var/www/html/wp-includes/functions.php on line 6131
class="wp-singular post-template-default single single-post postid-2316 single-format-standard wp-theme-videopro group-blog sidebar-right layout-fullwidth wpb-js-composer js-comp-ver-6.8.0 vc_responsive aa-prefix-click-">

Até que ponto as tarefas do JavaScript afetam o desempenho dos sites – e o que fazer a respeito

A execução das tarefas do JavaScript é geralmente a fonte dos problemas de desempenho mais comuns dos sites. Evitar as chamadas tarefas longas e bloquear o thread principal do JavaScript (JS) é uma das estratégias mais importantes para melhorar o desempenho. Neste artigo, vamos ver até que ponto as tarefas longas podem impactar o desempenho dos sites, bem como as etapas que você pode seguir para resolvê-las.

Resumo

O que é uma tarefa longa do JavaScript?

Os navegadores desempenham operações de exibição de página em um único thread, por isso é essencial que o tempo de execução da tarefa em JS não ultrapasse 50 ms. Se este indicador for excedido, o fenômeno é chamado de tarefa longa. Quando isto acontece, o usuário percebe um aumento de carga no navegador. Neste caso, cliques nos elementos da página são atrasados, a rolagem fica irregular ou a página simplesmente não responde.

Além do código do site (execução do JS), a formação de tarefas longas também pode ser influenciada pela velocidade da rede e pelo poder de processamento. Por exemplo, se tarefas de longa execução bloqueiam o thread principal do navegador devido a um baixo poder de processamento, o navegador não poderá processar os dados do usuário com rapidez suficiente, levando a um atraso na resposta da página.

Vale mencionar que tarefas longas podem ocorrer ao alterar o estilo de um elemento via JS, por exemplo, quando a altura de um bloco muda, forçando um recálculo das coordenadas da página: recalculate style => reflow, repaint.

Por que as tarefas longas do JavaScript prejudicam os Core Web Vitals?

A métrica FID (First Input Delay ou tempo de espera antes da primeira interação com o conteúdo) é a mais afetada pelas tarefas longas. O thread principal do navegador não é ocupado de maneira uniforme ao longo da vida útil de uma página, então o FID pode variar muito, dependendo de quando exatamente o usuário interage pela primeira vez com a página. Como resultado, alguns usuários podem não experimentar nenhuma latência, enquanto outros imediatamente percebem os sintomas de sobrecarga que já discutimos. É por isso que é importante entender como buscar as tarefas longas e otimizar o código para melhorar o FID do seu site.

O FID depende diretamente do comportamento de usuários reais e, como já mencionamos antes, é único para cada um deles. O segredo aqui é o monitoramento de comportamento, que pode ser feito com uma ferramenta de monitoramento Core Web Vitals  para a otimização do desempenho baseada em dados reais.

Como encontrar e medir tarefas longas do JavaScript?

Os serviços a seguir vão nos ajudar com isso:

Chrome DevTools

No painel Performance, registre o rastreamento de carregamento da página web.

[1] 

Procure as bandeiras vermelhas na área de fluxo. “Tarefas” aparecem em cinza.

 Passe o cursor sobre a barra para ver quanto tempo a tarefa levou para ser executada e se ela é considerada “longa”.

Para descobrir a origem de uma tarefa longa, selecione a barra de tarefas cinza. No painel da parte inferior, selecione as opções Bottom-Up e Group by Activity. Você verá quais foram as ações que mais contribuíram para a execução da tarefa.


Webpagetest.org

O bloqueio do thread principal por 50 ms é mostrado no diagrama usando blocos vermelhos. Este evento também bloqueia a entrada do usuário. A cor verde significa que a linha não está bloqueada.

Tarefas longas API

 Podemos medir tarefas longas em qualquer aplicativo após assinar a interface PerformanceObserver com o seguinte código:

var observer = new PerformanceObserver(function(list) {

var perfEntries = list.getEntries();

for (var i = 0; i < perfEntries.length; i++) {

     // Process long task notifications:

     // report back for analytics and monitoring

     // …

}

});

// register observer for long task notifications

observer.observe({entryTypes: [“longtask”]});

// Long script execution after this will result in queueing

// and receiving “longtask” entries in the observer.

Recomendações gerais para eliminar tarefas longas de JavaScript

  • Execute o código Web Workers em um thread separado, permitindo que o thread principal se concentre em outras tarefas importantes, como analisar HTML, preparar a árvore de renderização, renderizar pixels, responder à entrada do usuário, etc.
  • Quebre o código JavaScript marcado como tarefas longas em tarefas menores, usando as funções “setTimeout/requestidlecallback/requestAnimationFrame”. Isto fará com que o thread principal seja executado da maneira mais eficiente possível e desempenhe todas as operações sem atrasos.
  • Facilite a carga da rede ao carregar uma página (faça o menor número possível de solicitações de rede, carregue-as o mais tarde possível, preferencialmente após o evento FID).
  • Atrase o JavaScript não utilizado usando async ou defer.

Como resolvemos o problema de tarefas longas do JavaScript no Prism

Clickio Prism usa tecnologia avançada para criar uma versão de carregamento rápido e otimizada para dispositivos móveis de um site. Ao desenvolver o Prism, era importante garantir que as páginas fossem carregadas rapidamente, sem nenhum impacto negativo na experiência do usuário, por isso tomamos as seguintes providências para eliminar as tarefas longas do JavaScript:

  • Dividimos as tarefas longas em menores usando a função requestidlecallback/requestAnimationFrame.
  • Temos big data que não interage com o DOM (usando Web Workers).
  • Criamos uma fila de scripts de widget de carregamento.
  • Reduzimos a carga da CPU dos processos ao carregar a página (reduzindo o número de solicitações e transferindo dados durante a renderização da página).
  • Carregamos alguns rastreadores de terceiros com a biblioteca partytown.js.

Ao incorporar ajustes técnicos como esses, juntamente com outros recursos, como um global CDN e carregamento lento inteligente, o Prism pode fazer uma diferença significativa no desempenho do site e na experiência do usuário. De fato, em média, os editores que usam o Prism veem os visitantes passando 45% mais tempo em seu site e um aumento de 59% em seu RPM de sessão.

Para saber mais sobre o Prism e fazer uma avaliação gratuita, clique aqui.

(Visited 117 times, 1 visits today)