Variabilidade do Lighthouse

Muitos fatores contribuem para o desempenho das páginas da Web. As pontuações de desempenho do Lighthouse tendem a mudar devido à variabilidade inerente nas tecnologias da Web e de rede, mesmo que não haja uma alteração na página.

Fontes de variabilidade

A variabilidade na medição da performance é introduzida por vários canais com diferentes níveis de impacto. Veja abaixo uma tabela com várias fontes comuns de variabilidade de métricas, o impacto típico que elas têm nos resultados e a extensão que provavelmente ocorrerão em diferentes ambientes.

Origem Impacto Usuário final típico PageSpeed Insights Laboratório controlado
Não determinismo da página Caro PROVÁVEL PROVÁVEL PROVÁVEL
Variabilidade da rede local Caro PROVÁVEL IMPROVÁVEL IMPROVÁVEL
Variabilidade de rede de nível 1 Médio POSSÍVEL POSSÍVEL POSSÍVEL
Variabilidade do servidor da Web Baixo PROVÁVEL PROVÁVEL PROVÁVEL
Variabilidade do hardware do cliente Caro PROVÁVEL IMPROVÁVEL IMPROVÁVEL
Contenção de recursos do cliente Caro PROVÁVEL POSSÍVEL IMPROVÁVEL
Não determinismo do navegador Médio CERTO CERTO CERTO

Veja abaixo descrições mais detalhadas das fontes de variação e o impacto que elas têm nas combinações mais prováveis de ambiente de execução e ambiente do Lighthouse. Embora as abordagens de limitação aplicadas e simuladas possam ser usadas em qualquer um desses três ambientes, o usuário final típico usa uma limitação simulada.

Não determinismo da página

As páginas podem conter uma lógica não determinística que altera a experiência do usuário com uma página, ou seja, um teste A/B que altera o layout e os recursos carregados ou uma experiência do anúncio diferente com base no progresso da campanha. Essa é uma fonte de variação intencional e irremovível. Se a página mudar de forma a prejudicar o desempenho, o Lighthouse poderá identificar esse caso. A única mitigação aqui é por parte do proprietário do site, em garantir que a mesma versão da página seja testada entre execuções diferentes.

Variabilidade da rede local

As redes locais têm variabilidade inerente à perda de pacotes, à priorização de tráfego variável e ao congestionamento da rede last mile. Os usuários com roteadores baratos e muitos dispositivos compartilhando largura de banda limitada são os mais suscetíveis a isso. A limitação aplicada atenua parcialmente esses efeitos ao aplicar uma latência mínima de solicitação e uma capacidade máxima que mascara novas tentativas subjacentes. A limitação simulada atenua esses efeitos ao repetir a atividade de rede por conta própria.

Variabilidade de rede de nível 1

As interconexões de rede geralmente são muito estáveis e têm impacto mínimo, mas as solicitações entre regiões geográficas, por exemplo, a medição do desempenho de um site chinês nos EUA podem começar a ter um alto grau de latência introduzida pelos saltos de rede de nível 1. A limitação aplicada mascara parcialmente esses efeitos com a limitação de rede. A limitação simulada atenua esses efeitos ao repetir a atividade de rede por conta própria.

Variabilidade do servidor da Web

Os servidores da Web têm carga variável e nem sempre respondem com o mesmo atraso. Sites com tráfego menor e com infraestrutura de hospedagem compartilhada são geralmente mais suscetíveis a isso. A limitação aplicada mascara parcialmente esses efeitos ao aplicar uma latência mínima de solicitação na limitação de rede. A limitação simulada é suscetível a esse efeito, mas o impacto geral geralmente é baixo quando comparado a outra variabilidade de rede.

Variabilidade do hardware do cliente

O hardware no qual a página da Web está carregando pode afetar significativamente o desempenho. A limitação aplicada não pode fazer muito para atenuar esse problema. A limitação simulada mitiga parcialmente esse problema ao limitar o tempo de execução teórico das tarefas da CPU durante a simulação.

Contenção de recursos do cliente

Outros aplicativos em execução na mesma máquina enquanto o Lighthouse está em execução podem causar contenção para recursos de CPU, memória e rede. Malware, extensões de navegador e software antivírus têm impactos particularmente fortes no desempenho da Web. Ambientes de servidor multilocatário (como Travis, AWS etc.) também podem ter esses problemas. Executar várias instâncias do Lighthouse de uma só vez também distorce os resultados devido a esse problema. A limitação aplicada é suscetível a esse problema. A limitação simulada mitiga parcialmente esse problema ao reproduzir a atividade de rede por conta própria e limitar a execução da CPU.

Não determinismo do navegador

A execução das tarefas dos navegadores tem uma variabilidade inerente que afeta o carregamento das páginas da Web. Isso é inevitável para limitações aplicadas, já que, no final do dia, eles estão simplesmente relatando o que foi observado pelo navegador. A limitação simulada pode mitigar parcialmente esse efeito simulando a execução por conta própria, reutilizando apenas os tempos de execução de tarefas do navegador na estimativa.

Efeito das estratégias de limitação

Veja abaixo uma tabela com várias fontes comuns de variabilidade de métricas, o impacto típico que elas têm nos resultados e até que ponto as diferentes estratégias de limitação do Lighthouse conseguem mitigar o efeito delas. Saiba mais sobre as diferentes estratégias de limitação na nossa documentação sobre limitação.

Origem Impacto Limitação simulada Limitação aplicada Sem limitação
Não determinismo da página Caro SEM mitigação SEM mitigação SEM mitigação
Variabilidade da rede local Caro mitigado MITIDO PARCIALMENTE SEM mitigação
Variabilidade de rede de nível 1 Médio mitigado MITIDO PARCIALMENTE SEM mitigação
Variabilidade do servidor da Web Baixo SEM mitigação MITIDO PARCIALMENTE SEM mitigação
Variabilidade do hardware do cliente Caro MITIDO PARCIALMENTE SEM mitigação SEM mitigação
Contenção de recursos do cliente Caro MITIDO PARCIALMENTE SEM mitigação SEM mitigação
Não determinismo do navegador Médio MITIDO PARCIALMENTE SEM mitigação SEM mitigação

Estratégias para lidar com a variedade

Isolar fatores externos

  • Isole sua página da influência de terceiros o máximo possível. Nunca é divertido ser culpado pelas falhas variáveis de outra pessoa.
  • Isole o não determinismo do próprio código durante o teste. Se você tem uma animação que aparece aleatoriamente, os números de desempenho também podem ser aleatórios.
  • Isole seu servidor de teste do máximo de volatilidade possível da rede. Use o localhost ou uma máquina na mesma rede sempre que houver uma questão de estabilidade.
  • Isole o ambiente do cliente de influências externas, como software antivírus e extensões do navegador. Use um dispositivo dedicado para fazer testes sempre que possível.

Se sua máquina tiver recursos realmente limitados ou se a criação de um ambiente limpo estiver difícil, use um ambiente de laboratório hospedado, como o PageSpeed Insights ou o WebPageTest, para executar os testes. Em situações de integração contínua, use servidores dedicados quando possível. Ambientes de CI sem custo financeiro e instâncias com "burst" geralmente são bastante voláteis.

Executar o Lighthouse várias vezes

Ao criar seus limites de falha, seja ela mental ou programática, use valores agregados como a mediana, o 90o percentil ou até mesmo o mínimo em vez de testes únicos.

A pontuação média do Lighthouse de 5 execuções é duas vezes mais estável que 1 execução, e ferramentas como pwmetrics podem executar o Lighthouse automaticamente para você. Usar o valor mínimo também é uma grande melhoria em relação a não fazer testes e é incrivelmente simples de implementar. Basta executar o Lighthouse até cinco vezes até que ele seja aprovado.

Feedback

Esta página foi útil?
Sim
O que você tem de melhor nessa página?
Ajudou-me a atingir minhas metas
Agradecemos o feedback. Se você tiver ideias específicas sobre como melhorar esta página, crie um problema.
Tinha as informações que eu precisava
Agradecemos o feedback. Se você tiver ideias específicas sobre como melhorar esta página, crie um problema.
Tinha informações precisas
Agradecemos o feedback. Se você tiver ideias específicas sobre como melhorar esta página, crie um problema.
Foi fácil de ler
Agradecemos o feedback. Se você tiver ideias específicas sobre como melhorar esta página, crie um problema.
Outra opção
Agradecemos o feedback. Se você tiver ideias específicas sobre como melhorar esta página, crie um problema.
Não
Qual foi a pior coisa nessa página?
Não me ajudou a atingir meus objetivos
Agradecemos o feedback. Se você tiver ideias específicas sobre como melhorar esta página, crie um problema.
Não tinha as informações que eu precisava
Agradecemos o feedback. Se você tiver ideias específicas sobre como melhorar esta página, crie um problema.
Havia informações imprecisas
Agradecemos o feedback. Se você tiver ideias específicas sobre como melhorar esta página, crie um problema.
Achei difícil de ler
Agradecemos o feedback. Se você tiver ideias específicas sobre como melhorar esta página, crie um problema.
Outra opção
Agradecemos o feedback. Se você tiver ideias específicas sobre como melhorar esta página, crie um problema.