Saturday, January 29, 2011

Browser 加速

現在大家開著部電腦,大部分時間用來做乜?好多人都是用來上網吧?上網要快,除了網絡外,Browser 也很重要,不同 Browser 可以差好遠,正如上文,我強力推介 Mozilla Firefox 4 和 Google Chrome / Chromium。


有沒有方法可以更快!答案是有的。現在同大家講講吧。唔好開心住,我諗我這兒所講的方法無乜人合用,因為是 Linux 的,而且我假設你的電腦只有你一位 user,而且你有 root 的權限。如果你用其他 OS,自行看看可否調校一下。


這些方法,我均用到 /dev/shm 。利用 /dev/shm,可以在記憶體中分出一些來做 file system,把本來在硬盤運行的資料移至記憶體中運行,從而提升速度。要建立 /dev/shm,可以修改 /etc/fstab,在該檔案內加入此行:


shm /dev/shm tmpfs defaults,nodev,nosuid,noatime 0 0

注意,你須有 root 的權限才可改動 /etc/fstab。這樣每次 boot 機,都會把最多一半的記憶體作為 /dev/shm,你亦可改變其大小,詳情請看文末的 Reference。


Chromium


先講 Chromium 的加速方法。我是把 Chromium 的 Profile data 和 Cache 放入 /dev/shm。先在 terminal 執行以下指令:

rsync -a /home/your_user_name/.config/chromium/ /dev/shm/chromium/
rsync -a /home/your_user_name/.cache/chromium/ /dev/shm/chromium-cache/


your_user_name 就是你的 login name,例如 peter, mary, deadfatboy...。第一行是把你硬盤內的 chromium profile 與 /dev/shm/chromium Synchronize,第二行則是把你硬盤內 chromium 的 cache data 與 /dev/shm/chromium-cache synchronize。

因為記憶體內的資料在每次關機後都會刪掉,即是 /dev/shm 的資料在每次關機後都會刪掉的,所以你須設定系統,在每次開機把有關資料 sync 去 /dev/shm,且在每次關機前把 /dev/shm 的資料 sync 回硬盤。
設定方法在不同的 Linux distribution 會有所不同。我在 Arch Linux,修改 /etc/rc.local 便可改動開機的設定,在該檔案加入以下兩行:
rsync -a /home/your_user_name/.config/chromium/ /dev/shm/chromium/
rsync -a /home/your_user_name/.cache/chromium/ /dev/shm/chromium-cache/


關機的改動,是在 /etc/rc.local.shutdown 加入以下兩行:


rsync -a --delete /dev/shm/chromium/ /home/your_user_name/.config/chromium/
rsync -a --delete /dev/shm/chromium-cache/ /home/your_user_name/.cache/chromium/


然後 reboot。因為你改動了 profile 和 cache directories,你要告訴 chromium 作出了有關改動。方法是執行時鍵入所須 option。在 terminal 執行以下指令便可:
chromium --memory-model=low --user-data-dir="/dev/shm/chromium" --disk-cache-dir="/dev/shm/chromium-cache" --disk-cache-size=50000000 %U
以上指令中,--memory-model=low 是一項有關 chromium 的 memory management 的設定,看網上資料說有助加速。--disk-cache-size=50000000 是把 cache size 設定為最大 50MB。Cache size 太大我覺得會拖慢,我無深究幾大才最好,只是覺得 50MB 也好似不錯。另外,Cache size 太大的話,你每次 boot 便會花太多時間去把硬盤的 Cache sync 去 /dev/shm,所以我建議不要 set 得太大。
每次 run chromium 都要打以上那行咁長的指令,很煩吧?你可以在 Desktop Environment 弄個 shortcut。不同的 DE 會有不同的方法,自己找有關的資料。這樣便一功告成。


Firefox


在 Firefox 有幾個方法,可以一併使用。


最簡單的是 disable pango。在 Linux,在 ~/.profile加入這行:export MOZ_DISABLE_PANGO=1。Windows, Mac 的設定,大家可上網 Google 一下,search "disable pango"。


當然,亦可像上文般玩下 /dev/shm。先執行以下指令:

rsync -a /home/your_user_name/.mozilla/firefox/ /dev/shm/firefox/

/etc/rc.local 加入此行:

rsync -a /home/your_user_name/.mozilla/firefox/ /dev/shm/firefox/

/etc/rc.local.shutdown 加入此行:

rsync -a --delete /dev/shm/firefox/ /home/your_user_name/.mozilla/firefox/

在 Firefox,你無須像 Chromium 般搞 command line option,Firefox 有程式給你更改 profile。在 terminal 執行以下指令:

firefox -profilemanager

選 "create profile" >> "next" >> "choose folder",選擇 /dev/shm/firefox/xyz.defaultxyz.default應是其他名字,格式是 *.default 的 folder,自己看看你所用的是甚麼名字吧,我的叫 m393p6is.default

Reboot,大功告成。在 firefox,profile 同 cache 也在 /home/your_user_name/.mozilla/firefox,所以此方法把 profile 和 cache 也一併放入 /dev/shm


有關 Firefox 的方法,我估用在 Thunderbird 亦可,在硬盤內。在Linux,Thunderbird 的 profile 和 cache 是在 /home/your_user_name/.mozilla-thunderbird。透過類此方法便可提升 Thunderbird 的速度,不過我不建議咁做。


首先,在 boot 機時把資料 Sync 去 /dev/shm,會增加 boot 機的時間,資料越多,時間越長。因此,我沒有把這方法用在 Thunderbird。


另外,以上方法你會有流失資料的風險。無人敢肯定自己唔會死機,無論幾穩定的 OS,都會有 BUG,硬件亦會老化引致系統不穩。當有意外發生,你無法正常關機,資料不能 sync 回硬盤,你便會流失資料。在 Browser,只是一些 History, Cache,或者係新加的 bookmark, extension,失去了也無乜所謂。但在 Thunderbird,失去的有可能會是重要的 Email,小心小心。


Reference



有關 /dev/shm 的資料:

https://wiki.archlinux.org/index.php//dev/shm

有關 Chromium :

https://wiki.archlinux.org/index.php/Chromium#Profile_in_tmpfs

文章內只把 Chromium 放入 Memory,我的做法把 Cache 也放入 Memory。

有關 Firefox:

http://kb.mozillazine.org/Moving_your_profile_to_another_computer

1 comment:

均爺 said...

Haha, you are a geek!