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.