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

字號:

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