logo



Linux – Aspire o seu Firefox para maior performance

Não sei se é só a mim que acontece, mas tenho uma relação amor / ódio em relação ao Firefox. Por um lado acho fantástico o novo motor tracemonkey que processa javascript a uma velocidade alucinante. Por outro incomoda-me a degradação de performance à medida que os dados começam a ser armazenados em cache e toda a informação de navegação é guardada na base de dados interna do Firefox. Mas há solução para este problema ?

Resposta curta e rápida, sim! Comecemos por explicar a causa do problema. O Firefox usa um mini sistema de gestão de base de dados denominada SQLite. O SQLite tem a vantagem de ser totalmente desenvolvido em C++ conferindo-lhe uma elevada rapidez para pequenas aplicações. Contudo, a complexidade do Firefox começa a ser cada vez maior, levando este gestor de base de dados ao seu limite de performance.

Basicamente quando toda a sua informação como bookmarks, histórico, informação utilizada por plugins, é armazenada através de manipulação de registos de base de dados no SQLite, as várias inserções e remoções de informação deixam a base de dados com espaço não redimensionado (geralmente com espaço a mais) e a informação fica fragmentada.

O SQLite para esse aspecto tem uma função “Vacuum” (Aspirador), que permite reajustar o tamanho da base de dados e desfragmentar toda a sua informação. A boa notícia é que podemos aplicar esta função à base de dados de sqlite do Firefox.

Usando o Ubuntu como referência (embora tudo indica que possa funcionar em todas as outras distribuições de linux ou mesmo na linha de comandos MSDOS de Windows), precisa de instalar dos repositórios o sqlite. Para isso e como irá necessitar de usar a consola neste processo, pode instalar o sqlite da seguinte forma (lembre-se que pode fazer isto de uma forma visual e intuitiva através do gestor de pacotes Synaptic)

sudo apt-get install sqlite

Depois de instalar o sqlite, feche o Firefox e / ou qualquer processo a ele associado. Navegue de seguida até à pasta pessoal onde mantém toda a informação da base de dados SQLite do Firefox, através do seguinte comando:

cd ~/.mozilla/firefox/”numero_aleatorio”.default

Substitua “numero_aleatorio” pela referencia à sua pasta.default. Caso lhe faça alguma confusão escrever manualmente o número aleatório, pode depois da barra a seguir ao Firefox carregar na tecla “Tab” para poder completar o comando.

No meu caso por exemplo escrevi: (a sua designação será diferente)

cd ~/.mozilla/firefox/3b9xuz5m.default

A partir daqui o processo mais simples é copiar e colar o seguinte script na consola e esperar que termine.

for i in *.sqlite; do sqlite3 $i vacuum; done

Espere agora pacientemente pela conclusão do processo cujo o tempo de demora, poderá ir de alguns segundos até uns minutos dependendo da sua máquina. Uma vez terminado o procedimento anterior, feche a consola e lance o Firefox e tire partido numa maior rapidez nomeadamente no Firefox na gestão de cache e outros dados offline. A diferença na minha máquina foi notória, dependendo de outras máquinas o resultado pode nem sempre ser tão perceptível.


Arquivado na categoria: Linux, Tutoriais



23 comentários »

  1. Boa tarde.
    Curiosamente ontem andei à procura de uma ferramenta destas e encontrei o IniFox.

  2. BiteZero says:

    Postem a mesma solução em Windows se possível ;)
    É realmente chata a “lentidão” que as vezes atinge, talvez por usar uma quantidade de bookmarks considerável, ou abrir algumas tabs a mais..

    Bom post ;)

  3. Red_Acid says:

    Estava mesmo a precisar de uma coisa como esta, que o meu FF já andava lento como tudo. Melhorou MUITO a performance deste!

    Obrigado por este grande, mas mesmo grande, artigo!

  4. OmeuNOME says:

    apagando essa pasta do profile ele não cria uma nova como se tivessemos instalado de novo o Firefox?

    se assim for dá menos trabalho :) e a informação que se perde pode não ser importante para muita gente… no meu caso os bookmarks estão sincronizados e os plugins que uso facilmente se instalam.

    • Rui Oliveira says:

      Pois não não é importante :)

      Só perdes as configuração dos teus plugins, como tal tens de os instalar de novo ;) Se tiveres 5 ou 6 plugins então é fácil e rápido instalá-los (mais as configurações a eles associados) ?

      Claro que esta é uma solução mais fácil e segura. :)

  5. Bom trabalho, estas pequenas coisas são muito úteis.

  6. Ricardo says:

    Primeira vez que aqui estou a comentar este site que não tento perder nenhuma das grandes ajudas e novidades.
    Aqui vai a minha questão:
    Este comando sqlite está associado ao sqlite3? Pois instalei o sqlite3 segundo um site que li agora não me recordo, e julgo que tambem se tratava do firefox…

  7. Tiago says:

    Eu ja tinha usado o IniFox à uns tempos e a base de dados passou de 39MB para 27MB, lentidão não tinha a arrancar por isso não notei maior rapidez. Em todo o caso também tenho o historico para guardar apenas 10 dias.
    Cumps.

  8. Pedro Leitão says:

    IniFox = incrível.

    Grande diferença mesmo no arranque do firefox com sessão de várias tabs para restaurar.

    Excelente!

  9. R00KIE says:

    Interessante :D
    Testei e só fez uma redução de 5MB (50MB -> 45MB na directoria firefox) mas de qualquer forma mostra que havia lixo que já não fazia falta.

  10. JGomes says:

    Encontrei uma solução melhor para windows (testei no FF3.5)!
    O 2º passo é o mesmo explicado neste artigo (só que no artigo é para linux).

    Experimentem ir as opções de Internet do Internet Explorer e logo no primeiro separador tem áreas onde se pode apagar todos os ficheiros temporários (fruto da navegação na internet) e onde também se pode apagar o histórico. Apaguem ambos! (se quiserem deixem uns poucos dias para trás de histórico).

    De seguida vem o Inifox.

    Download: http://files.getdropbox.com/u/1113424/IniFox_en.zip

    Descompactar os ficheiros para:
    ->Windows XP: C:\Documents and Settings\[username]\Application Data\Mozilla\Firefox\Profiles\[randomcharacters.default]
    ->Windows Vista: C:\Users\[username]\AppData\Roaming\Mozilla\Firefox\Profiles\[randomcharacters.default]
    ->Windows 7: C:\Users\[username]\AppData\Roaming\Mozilla\Firefox\Profiles\[randomcharacters.default]
    (Application Data, em sistemas em tugues pode ser algo como Dados da Aplicação)

    Correr o IniFox.bat (2 cliques em cima e esperar que a janela DOS se feixe, pode demorar um pouco).

    Por fim correr o FF e provavelmente notarão uma enorme diferença. No meu caso passou a iniciar tão rapidamente como o opera ou chrome.

    Podem ainda ver este tutorial (para qualquer Sistema Operativo):
    http://www.ghacks.net/2009/07/11/speed-up-firefox-by-limiting-the-history/

    ———————————————–
    A explicação é a seguinte:
    Aparentemente o FF3.5 utiliza a mesma pasta de ficheiros temporários da navegação na Internet do Internet Explorer, estando sempre a acumular cada vez mais lixo. Ao iniciar, este demora porque tem que verificar/carregar os ficheiros temporários e o enorme histórico que vai mantendo. Aparentemente isto é fruto de um bug existente no FF, que já se encontra reportado e o qual se espera que seja resolvido já na próxima release (provavelmente daqui a poucos dias ou semanas).

    PS: se quiserem fazer um artigo com esta informação, estejam à vontade! ;)

  11. escrifonife1 says:

    Esses comandos , no ubuntu 9.04, não funcionaram.
    Pesquisando achei isso:
    http://ubuntuforum-pt.org/index.php?topic=38845.0

    t+

  12. softclean says:

    Aumento de performance a abrir não notei qualquer ganho, agora a barra de endereços aumentou consideravelmente a performance: enquanto que anteriormente para escrever um endereço, a barra ficava “bloqueada” 2 ou 3 segundos, agora é instantâneo!

    (eu guardo o histórico por 90 dias, daí a barra ter bastantes endereços para consultar :D )

  13. Alien69 says:

    e já agora para MAC é só abrir o terminal e escrever

    cd ~/Library/Application\ Support/Firefox/Profiles/
    for f in */*.sqlite; do sqlite3 $f ‘VACUUM;’; done

    • Mike says:

      No meu caso o VACUUM não podia levar aspas

      for f in */*.sqlite; do sqlite3 $f VACUUM; done

      Apesar de ter notado umas melhoras, não foi nada de especial. Sempre é melhor que nada. :)

  14. Rach says:

    Já era tempo desta gente da informática saber escrever português!

    O título em português seria:
    Linux – Aspire o seu Firefox para um maior desempenho

    Performance é um termo francês que os ingleses adoptaram.

    Depois de falado soa muito melhor desempenho do que performance.

  15. Mário says:

    Para linux pode se usar o seguinte script para automatizar o processo:

    #!/bin/bash
    cd ~/.mozilla/firefox/*.default;
    for i in *.sqlite; do sqlite3 $i vacuum; done;

Deixe o seu comentário

Aviso: Todo e qualquer texto publicado na internet através deste sistema não reflete, necessariamente, a opinião deste weblog ou do(s) seu(s) autor(es). Os comentários publicados através deste sistema são de exclusiva e integral responsabilidade e autoria dos leitores que dele fizerem uso. O autor deste weblog reserva-se, desde já, o direito de excluir comentários e textos que julgar ofensivos, difamatórios, caluniosos, preconceituosos ou de alguma forma prejudiciais a terceiros. Textos de caráter promocional ou inseridos no sistema sem a devida identificação de seu autor (nome completo e endereço válido de email) também poderão ser excluídos.