Fórum Ubuntu CZ/SK
Ostatní => Tipy a triky pro Linux => Téma založeno: wam]Spider007 12 Července 2009, 14:21:49
-
Na portali DSL.sk (http://www.dsl.sk/article.php?article=7755) vysiel velmi slusny clanok, ktory pojdenava o rychlosti Firefoxu.
Citujem:
U prehliadaču Firefox zároveň od verzie 3.0 prichádza k postupnému spomaľovaniu prehliadača pri používaní toho istého profilu, ktoré sa začína u užívateľov intenzívne používajúcich prehliadač prejavovať práve v týchto mesiacoch, viac ako rok po vydaní Firefoxu 3.0.
Dôvodom postupného spomaľovania je nedefragmentovanie súborov databázy SQLite používanej Firefoxom 3.0+ na uchovávanie histórie navštívených stránok, bookmarkov, cookies a ďalších informácií.
Po prekročení nastavenej maximálnej doby uchovávania navštívených stránok v histórii, ktorá je od Firefoxu 3.0 nastavená štandardne až na 180 dní, začne Firefox položky z histórie mazať. V databáze tým vznikajú prázdne databázou iba príležitostne zapĺňané stránky, čo vedie k nepotrebnému zväčšovaniu súboru databázy a k vyššej fragmentácii dát.
Oba tieto javy prispievajú k spomalenie prístupu napríklad k histórii a bookmarkom, ku ktorým Firefox pristupuje od verzie 3.0 pri každom vpisovaní údajov do políčka s adresou a zároveň pri štarte.
Vzhľadom na mazanie stránok z histórie po 180 dňoch v súčasnosti približne rok po vydaní Firefoxu 3.0 môže databáza places.sqlite obsahujúca históriu zaberať až takmer dvojnásobok miesta oproti miestu potrebnému pre uloženie platných dát v databáze. U užívateľov využívajúcich prehliadač intenzívne sa veľkosť places.sqlite po roku používania môže pohybovať v rádoch viacerých desiatok megabajtov a neefektívnosť jej štruktúry môže citiľne spomaľovať prehliadač.
Cize by sa dalo povedat, ze sa jedna o podobnu vec ako pri fragmentacii diskov. Nastastie staci par prikazov, o ktorych pojednava aj clanok. Uplne presny postup pre menej skusenych tam vsak trochu chyba. Postup som hodil aj do komentarov v clanku, ale tu to bude aspon na ociach :).
po nainstalovani sqlite3
sudo apt-get install sqlite3
vlezieme do zlozky s firefox profilom a pouzijeme prikaz:
sqlite3 nazov_suboru VACUUM
tento prikaz je mozne pouzit na vsetky zlozky *.sqlite v profile.
potom uz staci len restart OS.
-
testuji již delší dobu.. bez problému a je to znát ;)
doporučuji!
-
Takže jsem udělal skriptík umožnující optimalizaci pro FF verze 2 až 3.5 + všech profilů FF, dále dokáže zkontrolovat potřebnou knihovnu sqlite3 a případně spustit atp-get.. Skript stačí při mírném surfování pouštět 1x do měsíce
Upozornění: před spuštěním samotného skriptu firefox_optimize je nutné ukončit Firefox, jinak se skript zastaví, nic neudělá a ukončí se (ochrana před poškozením dat)
Jednoduchý postup v terminálu včetně spuštění a následné optimalizace (skript se stáhne a nastaví):
cd ~
wget http://dogbig.ezin.cz/linux/firefox_optimize
chmod +x firefox_optimize
./firefox_optimize
Samotný skript pro pokročilé :):
#!/bin/bash
echo "*** Optimalizační skript pro Firefox spuštěn ***";
echo ":i: Pro forum.ubuntu.cz zpracoval Michal Charvát (dog.big)";
echo ":i: Základ skriptu převzat z ubuntuforums.org";
username=$(whoami)
proc="$(ps aux | grep $username | grep -v $0 | grep firefox | grep -v grep)"
if [ "$proc" != "" ]
then
echo -e "\n STOP: Nejdříve je nutné ukončit Firefox! \n"
echo "*** Optimalizační skript pro Firefox ukončen ***";
exit 1
fi
echo -e "\n Kontrola existence balíčku sqlite3 a jeho umístění.."
if [ -d "/usr/bin/sqlite3/" ]
then
echo " INFO: Balíček nalezen."
else
echo " UPOZORNĚNÍ: Balíček sqlite3 nenalezen na daném umístění."
echo " Provádím pokus o jeho instalaci (vyžaduje heslo pro sudo)."
sudo apt-get update
sudo apt-get install sqlite3
echo " INFO: Pokus o instalaci balíčku sqlite3 proveden."
fi
curdir=$(pwd)
echo -e "\n Optimalizace profilů Firefoxu verze 2 až 3.0"
for dir in $(cat ~/.mozilla/firefox/profiles.ini | grep Path= | sed -e 's/Path=//')
do
cd ~/.mozilla/firefox/$dir 2>/dev/null
if [ $? == 0 ]
then
echo " Nacházím se ve složce $(pwd)"
echo -e " Optimalizuji..."
for F in $(find . -type f -name '*.sqlite' -print)
do
sqlite3 $F "VACUUM;"
done
echo -e " Dokončeno v $(pwd) ..."
else
echo -e " UPOZORNĚNÍ: Chyba provádění optimalizace ve složce $dir, přeskakuji."
fi
done
echo -e "\n Optimalizace profilů Firefoxu verze 3.5.X"
if [ -d "/home/$username/.mozilla/firefox-3.5/" ]
then
for dir in $(cat ~/.mozilla/firefox-3.5/profiles.ini | grep Path= | sed -e 's/Path=//')
do
cd ~/.mozilla/firefox/$dir 2>/dev/null
if [ $? == 0 ]
then
echo " Nacházím se ve složce $(pwd)"
echo -e " Optimalizuji..."
for F in $(find . -type f -name '*.sqlite' -print)
do
sqlite3 $F "VACUUM;"
done
echo -e " Dokončeno v $(pwd) ..."
else
echo -e " UPOZORNĚNÍ: Chyba provádění optimalizace ve složce $dir, přeskakuji."
fi
done
else
echo -e " INFO: Firefox 3.5.X není nainstalován, přeskakuji.."
fi
cd $curdir
echo -e "\n INFO: Optimalizace Firefoxu dokončena! \n";
echo "*** Optimalizační skript pro Firefox ukončen ***";
Předem se omlouvám za případné chyby v textech..
-
ta ochrana na spusteny firefox tam byt ani nemusi, pretoze samotny kod "sqlite db_name VACUUM" ti povie, ze databaza je zamknuta. Odomkne sa len v pripade vypnutia firefoxu.
inak dobra praca...teoreticky by sa to mohlo nastavit, aby sa ten prikaz spustal automaticky pri boote alebo kazdy mesiac pomocou cronu.
-
dog.big: Ještě tam můžeš přidat adresář ~/.songbird2 (a možná ještě nějaké další které mají integrovaný browser FF) :)
-
Vyborna vec , pro min skusenych pomucka aby to nemuseli stale kopirovat a spoustet pres terminal.
Vytvorime textovej soubor ( napriklad pomocou gedit) tam ten script vlozime, nasledne subor pojmenujeme jako chceme ( zmazeme koncovku txt). Nasledne subor umistnime v home folderi. Tam pravej klik -> properties -> permissions -> zaskrtneme allow executing file as program.
Muze se to zpustit primo z home folderu anebo pres terminal prikazem: ./jmeno_jakym_ste_to_pojmenovali
-
perfektní, places ze 150MB na polovinu.