Todo mundo quer navegar na internet com maior desempenho possível, isso é óbvio. O Firefox funciona bem, mas, porque não melhorar o desempenho dele?A web está cheia de sites com dicas de otimização do Firefox. As dicas geralmente consistem em alterações nas configurações-padrão do browser, acessadas através do famoso "about:config". O problema é que os sites dizem o que você deve fazer, mas não explicam o que acontece com a alteração dessas configurações. Isso me deixava bolado, afinal, se as alterações eram tão boas assim, por que os desenvolvedores do Firefox não as tornaram padrão?
Esse é o resultado da minha pesquisa:
O que deve ser feito para "teoricamente" melhorar o desempenho do Firefox:
- Com o Firefox aberto digitar na barra de endereço "about:config" (sem aspas)
; - O resultado será uma página com os campos e valores das configurações do Firefox, então, deve-se encontrar os seguintes campos e alterar seus valores:
- "network.http.pipelining" (boolean) de "false" para "true";
- "network.http.proxy.pipelining" (boolean) de "false" para "true";
- "network.http.pipelining.maxrequests" (integer) para "8"
- "network.http.pipelining.firstrequest" (boolean) para "true"
- "config.trim_on_minimize" (boolean) para "true";
- "nglayout.initialpaint.delay" (integer) para "0"
- Se por algum motivo não existir o campo com o nome citado, basta criá-lo por meio do menu pop-up do botão direito do mouse. Deve-se respeitar o nome e o tipo de dados do campo.
Agora, uma coisa que [quase] ninguém sabe: na maior parte dos casos, não vale a pena fazer qualquer uma dessas alterações. Pásmem.
Para entender porque, é preciso primeiramente entender o que as alterações determinam:
- O "config.trim_on_minimize" é a mais interessante e mais famosa das alterações. Com diversas abas abertas e vários add-ons rodando, o Firefox ocupa facilmente 80 MB de memória. Isso acontece porque todas as informações das páginas abertas ficam alojadas na memória, mesmo que você não esteja visualizando elas no momento. Com a ativação dessa configuração, as páginas que não estão sendo visualizadas são transferidas para o HD, liberando a memória. Há relatos do consumo de memória cair para 16 MB, sem que o modo de uso tenha sido alterado.
- A opção "nglayout.initialpaint.delay" determina quanto tempo o firefox deve esperar para começar a renderizar uma página depois de começar a receber as informações do servidor. O valor padrão é 250 (milissegundos), ou seja, 1/4 de segundo. Alterar o valor para 0 disponibilizaria as informações já baixadas mais rápido.
- Lembra daqueles programas "aceleradores de download"? Lembra que eles prometiam melhorar a velocidade de download em mais de 8 vezes? Lembra que geralmente não mudava nada? Você sabe porquê não mudava? O funcionamento daqueles sistemas é simples: ao invés de baixar o arquivo em sequência, o programa conecta várias vezes com o servidor e baixa através de cada conexão uma parte do arquivo. Supondo que o servidor onde o arquivo esteja armazenado limite a velocidade de download, o programa burlaria a limitação e aproveitaria a banda ao máximo: se o servidor limitasse a velocidade de download à 5 KB/s por conexão e o programa fosse capaz de criar 10 conexões, seria possível baixar o arquivo até à 50 KB/s. É isso que as configurações pipelining fazem.
Porque não funcionava? Geralmente o limite de download dos servidores era superior a banda de internet dos usuários, ou seja, com 1 ou 10 conexões, o arquivo era baixado na velocidade máxima da banda. Porque essa tecnologia tornaria o Firefox mais rápido? (a) A velocidade da internet mudou, a banda dos usuários está maior e nem todos os servidores acompanharam essa evolução, por isso implantam limitação de transferência por conexão; (b) num download convencional falamos de apenas 1 arquivo, na web falamos de diversos arquivos que devem ser baixados para carregar toda a página (imagens, scripts, vídeos, etc), portanto, aumentar o número de conexões simultâneas permite um melhor desempenho.
Agora vamos ao que interessa, porquê mudar essas configurações pode ser um tiro no pé:
- Mudar o tempo de renderização das páginas ("nglayout.initialpaint.delay"), pode ser ruim em dois casos: (a) quando se está usando uma conexão discada, pois não há tempo hábil para que o site seja carregado, o Firefox então tenta renderizar o que tem disponível, mas é forçado a re-renderizar a página diversas vezes enquanto carrega os dados da página, o processamento vai pro espaço e a página não é disponibilizada mais rapidamente; (b) quando seu processador não é lá essas coisas, pois mesmo com conexão banda larga é comum consumi-la com outras aplicações (p2p por exemplo), não sobrando banda para o browser, o que faz com que o problema de re-renderização fique ainda pior, consumindo muito processamento. Além disso, o quando você espera ganhar com essa prática? 1/4 de segundo por página?
- Colocar o Firefox para cachear as páginas em disco (config.trim_on_minimize) pode ser uma boa saída, mas só para quem sabe o que está fazendo. O HD é muito mais lerdo do que a memória, tanto no que se refere à velocidade de acesso, quanto à velocidade de gravação e leitura. Sendo assim, armazenar páginas em disco, torna o Firefox mais lerdo do que poderia ser num plano ideal. Costumamos pensar que quanto menos memória um programa utiliza, melhor é; esse não é necessarimente nosso caso. Como as páginas vão para o HD, mas precisam ser carregadas para a memória para serem exibidas novamente, há uma enorme perda de performance, principalmente para aqueles que trabalham com muitas abas e alterna muito entre elas (os dados são jogados da memória para o HD e vice-versa constantemente). A vantagem de usar essa configuração no Firefox e desafogar a memória para o uso em outros programas, ou seja, é o perfil do computador e do usuário que determinará se vale a pena ativar essa opção. Se você tem muita memória (512 MB ou mais), normalmente não vai ganhar nada com essa opção ativa; por outro lado, se eu tivesse pouca memória ou o hábito de diexar vários outros programas pesados abertos junto do Firefox, então eu estaria muito disposto a ativar essa configuração. Lembrando sempre que você está minando a performance do Firefox para melhorar o funcionamento geral do sistema.
- Ativar o pipelining é um dos casos que poderia gerar um aumento de performance em quase todos os casos (embora não seja recomendado para internet discada), há um pequeno aumento no volume de processamento, mas um grande ganho na velocidade de obtenção do conteúdo requerido. Mas, nem tudo são flores. O aumento no número de conexões pode sobrecarregar pequenos servidores (e mesmo grandes servidores). Dificilmente chegaria a derrubar qualquer um deles, mas se for usado em larga escala pode tornar a vida dos mantenedores mais difícil (sites mais lerdos e eventuais dificuldades de acesso por parte dos usuários). Mesmo que você não se importe com o quanto dói a cabeça do técnico que cuida do servidor dos sites que você está acessando, saiba que você mesmo pode ser prejudicado pelo uso de pipelining: os servidores podem achar que você está tentando derruba-lo através de um ataque DoS (Denial of Service) e passar a ignorar suas tentativas de conexão (ou seja, você não vai conseguir acessar o site). Há, também, o caso de um site que passou a bloquear o Firefox, pois não queria ser prejudicado por quem usava a extensão Fasterfox (que, entre outras coisas, ativa o pipelining no Firefox) - uma tentativa inútil, já que ninguém precisa usar o Firefox para ativar múltiplas conexões.
O que quero dizer é: há a possibilidade de tornar o Firefox mais bem adaptado para suas necessidades, mas, antes de fazer qualquer coisa, saiba o que você está fazendo. O uso de cada uma dessas opções de configuração é válido, mas se for usado no momento errado, ao invés de melhorar irá minar o desempenho do browser e/ou do sistema inteiro.

5 comentários:
Parabéns pelas dicas, amigo.. Serviram bastante.. Muito bom!!
É exatamente isso que eu digo no meu blog o mal do IVSF, muito boa a sua pesquisa e vai ser de grande ajuda.
Obrigado
Legal o texto, porem acho que a parte de HTTP pipelining esta errada, usando HTTP pipeline tu estas mandando varias requests (configuravel via about:config tb) atraves de UMA conexao TCP, ou seja, o server tambem se beneficia.
Ateh mais.
já encontrei em centenas de sites dicas para ganho de performance no firefox. mas nunca ninguém explicou tão bem o porquê. parabéns
Muito bem explicado, valeu ler esse otimo conteudo
valeu.
Postar um comentário