徹底優(yōu)化讓火狐上網(wǎng)不再卡

字號(hào):

Firefox是Linux用戶首選的瀏覽器,對(duì)其不作過(guò)多的介紹。只要看看LDCN的訪客留言就知道他的流行程度了。
    Firefox雖然是一款優(yōu)秀的瀏覽器,但是不免還有些不足。的不足就是其性能,簡(jiǎn)單的說(shuō),剛開始用很流暢,用久了,會(huì)越用越卡。
    分析下Firefox卡的原因,并通過(guò)設(shè)定相關(guān)參數(shù)解決了這個(gè)問(wèn)題。從此上網(wǎng)變得更加暢快!
    Firefox用戶目錄(~/.mozilla/firefox)是從Ubuntu 7.10時(shí)開始建立的,前前后后用過(guò)十幾個(gè)插件,經(jīng)歷了從Firefox 2到Firefox 3,從Ubuntu 7.10到Ubuntu 8.04。
    在Ubuntu 7.10的Firefox 2時(shí),就遇到卡的問(wèn)題,常常界面灰掉。
    等到Ubuntu 8.04的Firefox 3,情況好一點(diǎn),但是還是卡。后來(lái)我用極致編譯參數(shù)編譯了回Firefox 3.0,情況好了點(diǎn),地址欄反應(yīng)快了一點(diǎn)點(diǎn),而已。關(guān)閉Firefox的時(shí)候,還是會(huì)有很長(zhǎng)的停頓時(shí)間,有時(shí)還卡死。
    雖然重新建立用戶目錄會(huì)解決問(wèn)題(即把~/.mozilla/firefox刪除掉),但是相當(dāng)多的資料/插件要重來(lái),這個(gè)代價(jià)受不了,所以還得從Firefox本身動(dòng)手腳。
    查閱了相關(guān)資料,終于發(fā)現(xiàn)是由“歷史訪問(wèn)”和“位置”引起的。
    這個(gè)可不是我們能看到的“歷史記錄”和“地址欄”的已訪問(wèn)紀(jì)錄,而是數(shù)據(jù)層面的。
    讓我們來(lái)看看,你的數(shù)據(jù)是不是過(guò)大了
    查到數(shù)據(jù)庫(kù)的大小
    來(lái)到~/.mozilla/firefox/***.default(因人而異),下面有一個(gè)places.sqlite文件,看看它的大小。如果超過(guò)了10MB,理論上就能引起Firefox卡了。像我是21MB,一般用了一年左右的話,會(huì)有這個(gè)程度。
    這個(gè)文件里存了些什么呢?讓我用SQLite Manager這個(gè)擴(kuò)展來(lái)看看:
    在moz_favicons這張中,存了1500多個(gè)站點(diǎn)的Favicon,就是網(wǎng)站的Logo圖標(biāo)
    moz_historyvisits這張表中,保存著所有訪問(wèn)過(guò)的紀(jì)錄,我這里是六萬(wàn)條!
    而moz_places這里存著近三萬(wàn)多的places:地址,標(biāo)題和反轉(zhuǎn)域名信息。
    這些數(shù)據(jù)量到底對(duì)Firefox的性能有啥影響呢?我試著把places.sqlite改了個(gè)名,然后重啟Firefox。
    所有的停頓和卡都不復(fù)存在了!Firefox變得非常流暢。
    當(dāng)然問(wèn)題是所有的歷史紀(jì)錄和地址欄信息都沒(méi)有了,相當(dāng)于起到了徹底“清除隱私紀(jì)錄”的作用,只是這個(gè)的程度比“工具”->“清除隱私紀(jì)錄”更深。
    于是得出結(jié)論,在使用Firefox當(dāng)中只要你要訪問(wèn)網(wǎng)站,它就會(huì)頻繁的操作這個(gè)數(shù)據(jù)庫(kù),因?yàn)閿?shù)據(jù)庫(kù)很大,就影響了查詢效率,所以會(huì)卡。而在關(guān)閉Firefox時(shí),要對(duì)數(shù)據(jù)庫(kù)作寫入保存的操作,因?yàn)槲募?,所以停頓很久也就不奇怪了。
    清理數(shù)據(jù)
    查明了是這個(gè)文件里面數(shù)據(jù)太多的原因,如果你對(duì)當(dāng)前的歷史和紀(jì)錄沒(méi)什么要求的話,直接刪除就行了。
    或者也可以用“工具”->“清除隱私紀(jì)錄”,指定一些刪除選項(xiàng),也會(huì)有不錯(cuò)的效果,不過(guò)這并不能使文件變小,你需要用SQLite Manager,然后選擇好數(shù)據(jù)庫(kù),并Database->Compact Database。這樣會(huì)壓縮數(shù)據(jù)庫(kù),使文件減少。
    如果你熟悉Sql數(shù)據(jù)操作,那就更好了??梢杂兴A舻厍謇頂?shù)據(jù)庫(kù)。
    在moz_places這張表中,有個(gè)字段(frencency)記錄著每個(gè)條目的“頻繁程度”,通過(guò)這個(gè),你可以把一些不常使用的紀(jì)錄全都通過(guò)sql語(yǔ)句查詢并刪除掉。只留下一些常用的紀(jì)錄。
    比如不常用的紀(jì)錄frencnecy值一般為0,兩三天才訪問(wèn)一次的網(wǎng)站可能為140,而我每天上的Gmail是6000!
    永久性優(yōu)化
    “OK,我也會(huì)手動(dòng)清理歷史紀(jì)錄,讓我的Firefox快起來(lái),問(wèn)題是如何讓它不再慢下去呢?”
    我們來(lái)更改一個(gè)Firefox的隱藏設(shè)定,讓它少記錄點(diǎn)條目,我們就可以不用定期去清理它了。
    在地址欄輸入:about:config,過(guò)濾器中輸入history,注意以browser.history_expire_為前綴的條目:
    browser.history_expire_days:表示歷史紀(jì)錄過(guò)期天數(shù),默認(rèn)是180天!
    browser.history_expire_days.mirror:這個(gè)不詳,跟鏡像有關(guān)?
    browser.history_expire_days_min:是用戶值,即在“Firefox首選項(xiàng)”、“隱私”、“歷史”當(dāng)中,表示“保存我的歷史,至少X天”。即使你在首選項(xiàng)中把“至少X天”設(shè)置成了了1天,或取消,F(xiàn)irefox還是會(huì)保存瀏覽歷史,因?yàn)橄到y(tǒng)保留值為180天。
    browser.history_expire_sites:這個(gè)是保存的站點(diǎn)數(shù)量,默認(rèn)是四萬(wàn)個(gè)。
    也就是說(shuō),系統(tǒng)要么保存180天的紀(jì)錄,要么保存四萬(wàn)個(gè)瀏覽紀(jì)錄,不過(guò)我上面的moz_historyvisits怎么達(dá)到了六萬(wàn)個(gè)呢?可能是指moz_places這張表。
    差不多搞明白后,把值設(shè)置成下面的樣子,站點(diǎn)數(shù)保存四千個(gè)就夠了,系統(tǒng)保存3天的瀏覽紀(jì)錄,用戶最少1天。那個(gè)mirror隨便設(shè)置了個(gè)值。
    需要注意的是,如果你沒(méi)有手動(dòng)清理過(guò)places.sqlite,僅僅設(shè)定了這些值的話,文件是不會(huì)有變化的。清理還是得手動(dòng)來(lái)。
    接下來(lái),就用實(shí)踐來(lái)檢驗(yàn)一切了,再過(guò)個(gè)半年查詢一下places.sqlite的紀(jì)錄,看看是否是被限制在了四千以內(nèi),這樣的話Firefox應(yīng)該再也卡不起來(lái)了。
    另外,考試大建議把“首選項(xiàng)”,“安全”,把有關(guān)”嫌疑攻擊站點(diǎn)“和”偽造站點(diǎn)“的兩個(gè)選擇勾掉,有關(guān)這兩個(gè)東西的文件也會(huì)相當(dāng)大。不過(guò)沒(méi)有places.sqlite夸張罷了。