Extensões giras do Chrome que não deixam o teu navegador lento
As extensões decorativas de navegador têm fama, e é em grande parte merecida: pesadas, tagarelas, e instaladas com uma lista de permissões que ninguém leu. O que é uma pena, porque a categoria é genuinamente divertida e todos esses problemas dão para evitar.
Três coisas que vale a pena verificar
- A lista de permissões. O Chrome mostra-a antes de instalares. Storage é um ficheiro de preferências. Tabs, cookies, history e webRequest são as que deixam uma extensão ver o que navegas.
- Se mexe no layout da tua página. Uma extensão que insere elementos no fluxo do documento, ou que mede posições a cada evento de scroll, consegue engasgar uma página fluida por pouco que desenhe.
- Para onde envia pedidos. Uma decoração com o separador de rede ocupado está a fazer um segundo trabalho de que ninguém te avisou.
Porque é o layout que morde
Ler uma propriedade de layout — a altura de um elemento, a posição dele no ecrã — obriga o navegador a terminar todo o trabalho de layout pendente antes de conseguir responder. Faz isso dentro de um manipulador de scroll e pediste ao navegador para parar e medir sessenta vezes por segundo, numa página que estava a meio de desenhar.
Esse é o mecanismo por trás da maioria das queixas de «esta extensão torna o scroll lento», e é invisível até alguém o analisar com um profiler. A correção não tem glamour: nunca ler o layout durante o scroll, escrever só transformações e deixar o compositor mover.
Como é isso aqui
O scrolldog é um pequeno bichinho de pixels que corre pela borda de cada página à tua velocidade de scroll. É também um exemplo prático das verificações acima, porque teve de as passar para ser tolerável de se ter por perto:
- Duas permissões: storage e unlimitedStorage. Sem tabs, sem cookies, sem history, sem webRequest.
- Uma permissão de anfitrião — api.scroll.dog — usada para verificar uma licença, nunca para tocar na página em que estás.
- O bichinho vive numa pista fixa de tamanho zero e só escreve uma transformação CSS, por isso o layout da tua página nunca muda.
- O scroll é escutado de forma passiva e reduzido a uma escrita por frame de animação.
- Um botão tira-o de todos os separadores abertos, na hora.
Nada disto é para gabar — é o mínimo. Uma coisa cujo único trabalho é ser agradável de ver não tem motivo para tornar nada mais lento.
Ver o cão