PALMisLIFE 討論區

搜索
鹹魚爸魅力四射舞蹈教室
查看: 19890|回復: 20
打印 上一主題 下一主題

Firefox 3 日漸肥大的收藏庫減肥法

[複製鏈接]

108

主題

0

好友

841

積分

該用戶從未簽到

文章
1156
跳轉到指定樓層
1#
發表於 2009-4-30 00:48 |只看該作者 |倒序瀏覽
本文最後由 irvin 於 2009-4-30 16:45 編輯

本文發表於個人Blog:Bilog II: Firefox 3 日漸肥大的收藏庫減肥法M01MozTW

只要用了 Firefox 3 幾個月,你一定會感覺到反應明顯遲鈍了起來,尤其是在開啟、關閉、跟檢視歷史紀錄等跟「收藏庫」有關的功能上。今天我們要透過簡單的幾個指令,幫 Firefox 3 日漸肥大的收藏庫減肥!

Firefox 3 會把你所有上過的網站、輸入過的網址通通一五一十的紀錄在 Profile 目錄中的 places.sqlite 資料庫檔案裡。

這個檔案的位置在個人 profiles 的目錄中,目錄名稱是「亂碼.default」。
XP 在 C:\Documents and Settings\<user name>\Application Data\Mozilla\Firefox\Profiles\
Vista 放在 C:\Users\<user name>\AppData\Roaming\Mozilla\Firefox\Profiles\
Linux 在 ~/.mozilla/firefox/
Mac 在 家目錄\資源庫\Application Support\Firefox\Profiles\



看看我的 places.sqlite,已經肥大到 414MB 了,而這不過是從去年 12 月底開始使用至今呢!最簡單的清理法就是直接把 places.sqlite 刪除,開啟 Firefox 時會自動重建這個檔案,但是瀏覽紀錄就全沒了。



從收藏庫查看,可以發現已經記錄了 4 萬筆網站。Firefox 預設最多會保留四萬個網站、90 ~ 180 天的瀏覽紀錄,雖然可以調整 about:config 的 browser.history_expire_sites、browser.history_expire_days、browser.history_expire_days_min 等三個參數,控制相關設定,但是降低了 expire_days 或降低 expire_sites 的上限,又會使 Awesome Bar 的威力下降。

因此,我要使用簡單的 sql 命令,清除 places.sqlite 檔案中無用的紀錄,並保留實用的部份。Windows 的使用者請先前往 SQLite Download Page,下載 Precompiled Binaries For Windows 中的 sqlite-3_6_13.zip,解壓縮至目錄中,而 Mac OS X 已經內建了 sqlite3。

請事先備份你的 places.sqlite 檔案,並小心服用。進行前請先把 Firefox 關閉,如果沒關,我也不知道會發生什麼事情!

以下指令請在 Firefox 3 的 Profile 目錄下,以命令列逐行執行。
  1. sqlite3 places.sqlite "DELETE FROM moz_historyvisits WHERE place_id IN (SELECT id FROM moz_places WHERE visit_count <=2 );"
  2. sqlite3 places.sqlite "DELETE FROM moz_places WHERE (visit_count <=2 AND hidden <> 1 AND id NOT IN (SELECT place_id FROM moz_annos UNION SELECT fk FROM moz_bookmarks));"
  3. sqlite3 places.sqlite "DELETE FROM moz_inputhistory WHERE place_id NOT IN (SELECT id FROM moz_places);"
  4. sqlite3 places.sqlite "DELETE FROM moz_favicons WHERE id NOT IN (SELECT favicon_id FROM moz_places);"
複製代碼
上述指令的主要意義是,將 places.sqlite 內瀏覽次數小於 2 次的瀏覽紀錄刪除,保留常去(瀏覽 3 次以上)的網站,使 Awesome Bar 的威力不至於打折。

此時需要先打開 Firefox,再關閉 Firefox。確認完全關閉後再繼續進行下一步。
  1. sqlite3 places.sqlite "VACUUM;"
複製代碼
完成之後,你的收藏庫就減肥完成啦。經過減肥之後,我的收藏庫居然從 414MB 降到只剩 40.2MB!



再打開收藏庫看看,只剩下 2643 個項目。刪去了佔 9 成的那些不到兩次的瀏覽紀錄,成功的使 Firefox 3 回復該有的速度。



感謝 @yllan@softcup分享,這是今天研究一個下午的成果。

(好久沒在PIL發文了,現在介面變得真複雜啊)
已有 5 人評分分享 互動 收起 理由
superman + 5 寫得很詳細,一定花了很多時間.
fw + 5 + 1 感謝,很有用
Harvey + 10 真棒而且又有用的分享。
hardtosay + 5 + 1 很用心的分享!!!感謝
neosubway + 10 感謝分享!!

總評分: 分享 + 35  互動 + 2   查看全部評分

分享淘帖0 分享分享0 收藏收藏0 頂0 踩0
您的簽名長度超過 150 字符的限制,請返回修改。
[ 點選這裡返回估狗大神 ]

91

主題

11

好友

3180

積分

  • TA的每日心情
    無聊
    2018-8-16 22:45
  • 簽到天數: 1527 天

    連續簽到: 1 天

    [LV.Master]伴壇終老

    文章
    1010
    2#
    發表於 2009-4-30 11:17 |只看該作者
    真是太棒了,我的主機裡面用的firefox places.sqlite原本有150MB,現在變成12M多。
    開啟速率也變快了。
    回復

    使用道具 舉報

    310

    主題

    0

    好友

    3603

    積分

    該用戶從未簽到

    文章
    2265
    3#
    發表於 2009-4-30 11:27 |只看該作者
    直接清除隱私資料的效果一樣嗎?
    回復

    使用道具 舉報

    91

    主題

    11

    好友

    3180

    積分

  • TA的每日心情
    無聊
    2018-8-16 22:45
  • 簽到天數: 1527 天

    連續簽到: 1 天

    [LV.Master]伴壇終老

    文章
    1010
    4#
    發表於 2009-4-30 11:52 |只看該作者
    清除隱私資料,應該是直接幹掉那個places.sqlite檔??
    回復

    使用道具 舉報

    310

    主題

    0

    好友

    3603

    積分

    該用戶從未簽到

    文章
    2265
    5#
    發表於 2009-4-30 11:59 |只看該作者
    我都是進去選項,隱私資料,立即清除。
    回復

    使用道具 舉報

    91

    主題

    11

    好友

    3180

    積分

  • TA的每日心情
    無聊
    2018-8-16 22:45
  • 簽到天數: 1527 天

    連續簽到: 1 天

    [LV.Master]伴壇終老

    文章
    1010
    6#
    發表於 2009-4-30 12:11 |只看該作者
    本文最後由 Harvey 於 2009-4-30 12:14 編輯

    剛剛試了一下,清除隱私資料之後,歷史紀錄是不見了。
    但是那個檔的大小一點都沒有變化。

    應該是從資料庫裡面把資料刪掉,沒有做壓縮的動作。

    照著做一遍,還是有用的。
    起碼可以放出一些空間。
    回復

    使用道具 舉報

    702

    主題

    19

    好友

    1萬

    積分

    永遠想不透一直是個謎

  • TA的每日心情
    慵懶
    2012-1-1 10:38
  • 簽到天數: 1 天

    連續簽到: 1 天

    [LV.1]初來乍到

    文章
    10264
    7#
    發表於 2009-4-30 12:18 |只看該作者
    不管是sql 命令還是清除隱私資料
    都無法測底清完places.sqlite
    因為我用了好幾個方法places.sqlite最底還是要佔用9M的空間
    都已經把記錄都清空了他是還記啥鬼東西要佔到9M?
    而且直接把places.sqlite砍掉,就是見鬼的發現書籤會只剩2.x之前的部分
    所以我要撤底減肥都是把書籤先匯出,然後砍掉places.sqlite再匯入書籤
    這樣places.sqlite就只會剩1M左右
    不過這當然只是初期,過沒幾天他又會越來越肥大
    所以砍places.sqlite的工作又要再做一次
    這絕對是FX3本身對SQL管理的問題
    不管怎樣的方法都只是治標,唯有請FX小組測底解決才有辦法根治
    不回答已經有答案或內容不清晰的問題
    把問題PM我也沒用,會答的在討論區已經答了,你PM我我也只會叫你去討論區發問
    回復

    使用道具 舉報

    108

    主題

    0

    好友

    841

    積分

    該用戶從未簽到

    文章
    1156
    8#
    發表於 2009-4-30 14:03 |只看該作者
    本文最後由 irvin 於 2009-4-30 14:05 編輯
    不管是sql 命令還是清除隱私資料
    都無法測底清完places.sqlite
    因為我用了好幾個方法places.sqlite最底還是要佔用9M的空間
    czh 發表於 2009-4-30 12:18

    除了瀏覽歷史外,places.sqlite 還有各網站的 favicon 快取,
    Google Toolbar 或 Fastdial 之類擴充套件的資料等很多紀錄,所以沒辦法完全不用。
    但是可以調整:about:config
    1. browser.history_expire_sites → 保留網站數目,調低
    2. browser.history_expire_days → 保留天數,調低
    3. browser.history_expire_days_min → 最短保留天數→也調低
    複製代碼
    然後把 places.sqlite 刪掉(記得先備份),開啟 Firefox 會自動重建書籤,這樣來限制住 places.sqlite 增長。

    Firefox 3.5 中對於過久的瀏覽紀錄已經有所處理,聽說比較不會長過頭,
    但是應該還是不可能保持檔案大小在個位數啦……
    您的簽名長度超過 150 字符的限制,請返回修改。
    [ 點選這裡返回估狗大神 ]
    回復

    使用道具 舉報

    5

    主題

    0

    好友

    27

    積分

    該用戶從未簽到

    文章
    19
    9#
    發表於 2009-4-30 14:07 |只看該作者
    果真有效耶!原來200多M變成10M左右,
    之前都固定2~3個月刪一次,現在更省工了。
    回復

    使用道具 舉報

    108

    主題

    0

    好友

    841

    積分

    該用戶從未簽到

    文章
    1156
    10#
    發表於 2009-4-30 16:27 |只看該作者
    補充說明:
    places.sqlite 的位置在個人 profiles 的目錄中,目錄名稱是亂碼.default
    XP 是在 C:\Documents and Settings\<user name>\Application Data\Mozilla\Firefox\Profiles\
    Vista 放在 C:\Users\<user name>\AppData\Roaming\Mozilla\Firefox\Profiles\
    Linux 在 ~/.mozilla/firefox/
    Mac 在 家目錄\資源庫\Application Support\Firefox\Profiles\
    您的簽名長度超過 150 字符的限制,請返回修改。
    [ 點選這裡返回估狗大神 ]
    回復

    使用道具 舉報

    702

    主題

    19

    好友

    1萬

    積分

    永遠想不透一直是個謎

  • TA的每日心情
    慵懶
    2012-1-1 10:38
  • 簽到天數: 1 天

    連續簽到: 1 天

    [LV.1]初來乍到

    文章
    10264
    11#
    發表於 2009-4-30 16:30 |只看該作者
    Windows的路徑是
    %APPDATA%\Mozilla\Firefox\Profiles\
    在路徑列這樣輸入就看的到檔案
    不回答已經有答案或內容不清晰的問題
    把問題PM我也沒用,會答的在討論區已經答了,你PM我我也只會叫你去討論區發問
    回復

    使用道具 舉報

    108

    主題

    0

    好友

    841

    積分

    該用戶從未簽到

    文章
    1156
    12#
    發表於 2009-5-1 01:53 |只看該作者
    補充:很多朋友在問,這樣作跟使用 Firefox 內建的「清除隱私資料…」清除瀏覽紀錄有什麼不同?基本上的差別就是,清除隱私資料,會把所有的瀏覽紀錄清光光,我卻只想清除無用的那些紀錄,保留有用的部份。此外,清除隱私資料→清除瀏覽紀錄後,如果沒有做 sqlite vacuum 空間是不會釋出的(我也不知道會不會定期自動釋放)。



    經過小小的測試,上面的四個 places.sqlite 分別是以下操作所得:
    (原檔案大小是 372.2 MB)
    places.sqlite 1 Firefox 3 開啟→關閉→VACUUM  366.3MB
    places.sqlite 2 Firefox 3 開啟→清除隱私資料→VACUUM 428KB
    places.sqlite 3 Firefox 3.5b4 開啟→關閉→VACUUM 366.2MB
    places.sqlite 4 Firefox 3.5b4 開啟→關閉→清除隱私資料→VACUUM 168kb
    看來 Firefox 3.5 beta 4 對於 places.sqlite 的處理,似乎有比較乾淨一點。

    除了瀏覽歷史外,places.sqlite 還存有各網站的 favicon 快取,Google Toolbar 或 Fastdial 之類擴充套件的資料等很多紀錄,所以沒辦法完全不要這個檔案。但是可以調整以下參數來控制 Firefox 3 對瀏覽歷史的保留動作。
    1. about:config
    2. browser.history_expire_sites 瀏覽歷史中保留的網站數目,預設是 40000 個
    3. browser.history_expire_days 瀏覽歷史的最長保留天數,預設是 180 天
    4. browser.history_expire_days_min 瀏覽歷史的最短保留天數,預設是 90 天
    複製代碼
    然後把 places.sqlite 刪掉(記得先備份)讓 Firefox 3 自動重建資料庫。
    您的簽名長度超過 150 字符的限制,請返回修改。
    [ 點選這裡返回估狗大神 ]
    回復

    使用道具 舉報

    181

    主題

    5

    好友

    2509

    積分

    超敗家的白爛長笛手

  • TA的每日心情
    郁悶
    2013-4-6 01:41
  • 簽到天數: 4 天

    連續簽到: 1 天

    [LV.2]偶爾看看I

    文章
    2201
    13#
    發表於 2009-5-1 02:40 |只看該作者
    咦~我的 FF3 不太一樣,用了好一陣子了,places.sqlite 這個檔案幾乎都保持在 10~20 MB 中間,我從來沒去刪過。FF 開啟的速度還能接受,附加元件 22 個左右。
    不過,我一直習慣把瀏覽記錄設定在保留14天以內。就只有這些設置,沒改過啥特別的。另外,我有把 FF cache 等 temp file 移到 RamDisk,
    That's it.
    回復

    使用道具 舉報

    108

    主題

    0

    好友

    841

    積分

    該用戶從未簽到

    文章
    1156
    14#
    發表於 2009-5-1 03:17 |只看該作者
    瀏覽紀錄少,這個檔案應該就不會長太大。我的 400MB 是因為裡面有去年年底到目前的所有瀏覽紀錄啦……
    您的簽名長度超過 150 字符的限制,請返回修改。
    [ 點選這裡返回估狗大神 ]
    回復

    使用道具 舉報

    108

    主題

    0

    好友

    841

    積分

    該用戶從未簽到

    文章
    1156
    15#
    發表於 2009-5-5 19:26 |只看該作者
    本文最後由 irvin 於 2009-5-5 19:36 編輯

    經過上週這篇文章發表後,收到很多網友的迴響。其中有一點令我好奇:有的網友 places.sqlite 很小,有的很大。收藏庫中同樣是數萬個網站的記錄,有的網友跟我一樣上百 MB,有的卻只有數 MB,非常奇怪,因此今天又趁機研究了一下。

    由於收藏庫檔案增大的狀況每人不一,我開始懷疑有擴充套件在吃空間,因此把 places.sqlite 每個單獨的 table 拆開來看看容量。

    這是我的 places.sqlite 的結構:



    我把每個 Table 獨立匯出後,每個 Table 大小如下(places.sqlite 檔案大小為 84 MB):



    很明顯的是,moz_annos 這張表佔了整個資料庫檔案總容量的 86%,問題一定出在這邊。annos table 的內容包含以下的部份,的確看到幾個擴充套件使用了這張表儲存資料。



    在我的收藏庫中 moz_annos 的內容,各 ID 筆數分別為:10(網頁編碼)117 筆、14 "google-toolbar/thumbnail" 2971 筆、15 "google-toolbar/thumbnail-score" 2971 筆。

    看到這邊,已經確認問題出在 Google Toolbar 工具列這個擴充套件上。其中 ID 14 的 "google-toolbar/thumbnail",兩千多筆資料,每筆竟然都是 base 64 編碼的 png 圖檔。

    讓我們取出一筆來 Decode:



    得到某個網站的縮圖:



    其實這是 Google Toolbar 5 的新功能「新分頁」所使用的縮圖:



    如果各位朋友跟我一樣,對這個畫面沒有什麼印象。可以開啟下述網址看看:
    1. chrome://google-toolbar/content/new-tab.html
    複製代碼
    此外,@littlebtc 發現 Bugzilla 中,已經有人回報這個問題:Bug 489173 – Latest Google Toolbar Appears to Make places.sqlite Massive,也有人回報給 Google。我先前安裝的 Google Toolbar 5 for Mac 版本是 5.0.20090122Mb2,最新的 5.0.20090324M 版不知道是否已經修正了這個問題。

    這個功能,可以在 Google Toolbar 的設定畫面中,透過取消主畫面倒數第三個選項「啟用 Google 新分頁網頁」來關閉。



    現在鎖定問題,讓我們來修改一下,上一篇文章中的收藏庫瘦身指令:

    以下使用簡單的 sql 命令,清除 places.sqlite 檔案中無用的紀錄,並保留實用的部份。Windows 的使用者請先前往 SQLite Download Page,下載 Precompiled Binaries For Windows 中的 sqlite-3_6_13.zip,解壓縮至目錄中,而 Mac OS X 已經內建了 sqlite3。

    請事先備份你的 places.sqlite 檔案,並小心服用。進行前請先把 Firefox 關閉,如果沒關,我也不知道會發生什麼事情!以下指令請在 Firefox 3 的 Profile 目錄下,以命令列逐行執行。
    1. sqlite3 places.sqlite "DELETE FROM moz_historyvisits WHERE place_id IN (SELECT id FROM moz_places WHERE visit_count <=2 );"
    2. sqlite3 places.sqlite "DELETE FROM moz_places WHERE (visit_count <=2 AND hidden <> 1 AND id NOT IN (SELECT place_id FROM moz_annos UNION SELECT fk FROM moz_bookmarks));"
    3. sqlite3 places.sqlite "DELETE FROM moz_inputhistory WHERE place_id NOT IN (SELECT id FROM moz_places);"
    4. sqlite3 places.sqlite "DELETE FROM moz_favicons WHERE id NOT IN (SELECT favicon_id FROM moz_places);"
    5. sqlite3 places.sqlite "DELETE FROM moz_annos WHERE anno_attribute_id IN (SELECT id FROM moz_anno_attributes WHERE name = 'google-toolbar/thumbnail-score' OR name = 'google-toolbar/thumbnail');"   
    複製代碼
    最後一行正是鎖定了 Google Toolbar 的記錄來刪除。此時需要先打開 Firefox,再關閉 Firefox。確認完全關閉後再繼續進行下一步。
    1. sqlite3 places.sqlite "VACUUM;"
    複製代碼
    完成之後,你的收藏庫就減肥完成啦。經過第二次減肥,我的收藏庫從 414MB 降到只剩 5MB!

    您的簽名長度超過 150 字符的限制,請返回修改。
    [ 點選這裡返回估狗大神 ]
    回復

    使用道具 舉報

    15

    主題

    1

    好友

    295

    積分

    該用戶從未簽到

    文章
    387
    16#
    發表於 2009-5-6 00:05 |只看該作者
    由於收藏庫檔案增大的狀況每人不一,我開始懷疑有擴充套件在吃空間 ...
    irvin 發表於 2009-5-5 19:26


    這應該是肯定的,因為我也算是個極端的案例,我的瀏覽記錄最舊的是去年11月7號,但是我的places.sqlite 只有28MB,因為除了 Java 和 flash 這種不裝不行的 plug-in 以外,我一個套件也沒裝... (用 Firefox 卻不裝套件?我朋友說我腦袋有問題,壞去了)
    回復

    使用道具 舉報

    27

    主題

    0

    好友

    1938

    積分

  • TA的每日心情
    開心
    2011-4-9 04:43
  • 簽到天數: 1 天

    連續簽到: 0 天

    [LV.1]初來乍到

    文章
    2066
    17#
    發表於 2009-5-6 08:41 |只看該作者
    以前FF 2.x的時候,就有發現google tool bar會產生很佔空間的紀錄檔,例如search.sqlite。
    另外, urlclassifier3.sqlite 佔的空間也不小呢!
    回復

    使用道具 舉報

    1234

    主題

    10

    好友

    1萬

    積分

    該用戶從未簽到

    文章
    23084
    18#
    發表於 2009-9-16 18:28 |只看該作者
    不知 SpeedyFox 效果如何?
    http://www.crystalidea.com/speedyfox
    [1996] 神寶 Palmax PD-95T [2000] Palm IIIx [2001] SONY S300, HandEra330 [2002] Diamond Mako, CASIO G-FORT, JVC MP-C102, SONY SL10, SHARP SL-5500 [2003] SHARP SL-C700, SONY NZ90/NX60, NEC Sigmarion III, SONY NX73V/U [2004] SONY NX73V/E, SHARP SL-6000L, Handspring treo 600 [2005] SE P900i, Tapwave Zodiac 2 [2006] Garmin iQue 3600, Palm Treo 650/680 [2007] Nokia 9300i/E61 [2008] Nokia E70/E90 [2010]
    回復

    使用道具 舉報

    181

    主題

    5

    好友

    2509

    積分

    超敗家的白爛長笛手

  • TA的每日心情
    郁悶
    2013-4-6 01:41
  • 簽到天數: 4 天

    連續簽到: 1 天

    [LV.2]偶爾看看I

    文章
    2201
    19#
    發表於 2009-9-16 22:13 |只看該作者
    試試 Vacuum Places Improved 這個 Extension 吧。
    可以在 FF 啟動時直接清理 spaces.sqlite,挺好用的。
    回復

    使用道具 舉報

    108

    主題

    0

    好友

    841

    積分

    該用戶從未簽到

    文章
    1156
    20#
    發表於 2009-9-17 03:25 |只看該作者
    試試 Vacuum Places Improved 這個 Extension 吧。
    可以在 FF 啟動時直接清理 spaces.sqlite,挺好用的。
    小賤健 發表於 2009-9-16 22:13


    其實這篇文章的方法我已經把他寫成套件了
    PlacesCleaner 收藏庫清潔工
    市面上其他的 places.sqlite 清理工具(包含 Vacuum Places Improved)都只是進行 Vacuum(資料庫重組)而已,
    用 PlacesCleaner 可以先清掉少看的紀錄再重組,效果更好!
    已有 2 人評分分享 收起 理由
    zard + 10 真是高手,造福廣大鄉民 (Y)
    czh + 30 PlacesCleaner真正好用

    總評分: 分享 + 40   查看全部評分

    您的簽名長度超過 150 字符的限制,請返回修改。
    [ 點選這裡返回估狗大神 ]
    回復

    使用道具 舉報

    51

    主題

    0

    好友

    753

    積分

  • TA的每日心情
    擦汗
    2011-4-6 14:06
  • 簽到天數: 1 天

    連續簽到: 0 天

    [LV.1]初來乍到

    文章
    1013
    21#
    發表於 2009-9-17 09:38 |只看該作者
    20# irvin

    這邊有個辦法,就是把某個語法貼到FF的錯誤主控台裡面,就會做一下vacuum
    1. Components.classes["@mozilla.org/browser/nav-history-service;1"].getService(Components.interfaces.nsPIPlacesDatabase).DBConnection.executeSimpleSQL("VACUUM");
    複製代碼
    credit:
    http://lifehacker.com/5344418/ma ... uming-your-database
    回復

    使用道具 舉報

    您需要登錄後才可以回帖 登錄 | 免費註冊

    與站長聯繫| PALMisLIFE 掌上生活      下載:更快、更棒、更好玩

    GMT+8, 2024-12-23 16:16 , Processed in 0.042766 second(s), 31 queries , Gzip On.

    Powered by Discuz!

    © 2001-2012 Comsenz Inc. style by eisdl

    回頂部