JavaScript legado
O Silktide verifica se a sua página envia código extra cuja única finalidade é dar suporte a navegadores muito antigos. Os navegadores modernos não precisam desse código, portanto, para quase todos os visitantes, ele representa tempo de transferência e processamento desperdiçado.
Quando o é preparado para publicação, as ferramentas de compilação frequentemente adicionam polyfills (substitutos para funcionalidades que faltam nos navegadores antigos) e transformações (reescritas da sintaxe moderna para equivalentes mais antigos). Quando configurados para navegadores que praticamente desapareceram, eles podem adicionar um peso considerável a cada carregamento de página.
Por que isso é importante
A esmagadora maioria dos visitantes usa navegadores que se atualizam automaticamente e oferecem suporte nativo ao JavaScript moderno. O código de compatibilidade legado faz com que todos eles paguem — em tempo de transferência, dados móveis e tempo de processamento — pela compatibilidade com navegadores que podem representar nenhuma parte do seu tráfego real.
É fácil não perceber o custo, porque nada parece errado: o site funciona em todo o lado. Ele é simplesmente mais lento do que precisa de ser, em todas as páginas e para todas as pessoas.
Como corrigir
Esta é uma correção na configuração da compilação que deve ser feita pelos seus programadores:
- Defina os navegadores-alvo compatíveis com a compilação com base nos navegadores que os seus visitantes realmente usam, em vez de utilizar uma predefinição legada que ficou desatualizada. A maioria das ferramentas de compilação obtém esta informação de uma declaração de compatibilidade com navegadores no projeto.
- Remova as importações abrangentes de polyfills que adicionam suporte para tudo e deixe a compilação incluir apenas o que os seus alvos realmente precisam.
- Se ainda for necessário dar suporte a algum navegador antigo, disponibilize duas compilações — uma moderna para os navegadores atuais e outra legada apenas para os navegadores que dela precisam — em vez de enviar a compilação legada para todos.
Como o Silktide testa isto
- Carrega a página num navegador real, utilizando o tipo de dispositivo, a velocidade de ligação e a localização de teste configurados para os seus testes de velocidade.
- Analisa o JavaScript que a página transfere em busca de polyfills conhecidos e transformações de sintaxe de que os navegadores modernos não precisam.
- Comunica cada ficheiro que contém código legado, indicando o tamanho da transferência que poderia ser poupado.
- Classifica a página com base no tamanho total desperdiçado: cerca de 30 KB de código legado resultam numa classificação inferior, e 100 KB ou mais são classificados como fracos.
Resolução de problemas
Ainda precisamos de dar suporte a navegadores antigos
Pergunte-se se os seus visitantes realmente os utilizam — os seus Analytics indicarão isso. Se alguns os utilizarem genuinamente, o padrão module/nomodule permite-lhe disponibilizar código legado apenas aos navegadores que dele precisam, para que os navegadores modernos deixem de suportar esse custo.
O código legado está num script de terceiros
Os scripts de outros fornecedores podem trazer o seu próprio código legado adicional, que não pode ser recompilado por si. Verifique se o fornecedor disponibiliza uma compilação moderna e avalie o valor do script face ao respetivo custo.