页面

2009年1月25日

让 Firefox 在内存上运行

Linux版Firefox的慢算是出名的了,在同一台机器上,windows版的要流畅很多很多……为什么Linux版会这么慢呢?我觉得有下面几点原因。
  1. nvidia显卡驱动的问题,这是驱动上有bug导致的,不过在180.22版驱动上已经好转很多了。
  2. 用户目录(~/.mozilla/firefox)下的缓存数据过于庞大,这个在windows版也会出现,但我用了2年的windows版firefox,感觉并不明显啊
  3. 编译的问题

尽管3.0版firefox有很大进步,但对于我这种firefox重度使用者,仍然是偏慢。在使用了TualatriX介绍的优化方法后,的确好转了很多。但在20个以上的标签页间进行切换,仍然是会出现缓慢的现象。于是狠下心来,将主目录下的 .mozilla 目录搬到内存上,发现切换标签页缓慢的现象还真的消失了!使用了一个多月,现在我打开30个以上的标签页也不会再慢下来了,感觉非常好!

下面介绍如何将 Firefox 运行在内存上。注意:下面提到的 /tmp 目录是使用 tmpfs 挂载的,如何使用 tmpfs 可以浏览这篇介绍,还有一句废话,你要有足够的内存,我的物理内存是2G。

首先将用户目录下的 .mozilla 目录备份,放到你喜欢的地方,例如放到 /var/local 下。推荐直接用tar打包,不要压缩,下面会说到好处,而放到 /var/local 下是为了配合下面的脚本。

cd $HOME && tar -cpf mozilla.tar .mozilla/*
mv mozilla.tar /var/local


在 /tmp 目录下创建一个目录,用于存放 .mozilla 目录下的文件

mkdir /tmp/.mozilla


然后将用户目录下的 .mozilla 目录链接到刚才创建的目录

ln -sf /tmp/.mozilla $HOME/.mozilla


解压刚才备份的tar包

tar -xpf /var/local/mozilla.tar -C /tmp


好了,现在打开 fireofx 看看,切换标签页的速度是不是有所提升了?我记得当时试验的效果是很明星的。如果你也满意,推荐用脚本直接在开机后就解压 tar 文件到 tmpfs 上,关机时就把 tmpfs 上的数据重新打包备份,多方便啊~。这时直接用tar打包的好处是,每当关机时不用等待压缩 .mozilla 目录的文件,我就曾经用7z压缩数据,那速度……

下面是我写的自动脚本,以 daemon 方式运行,能在 Archlinux 上使用,其他发行版可能需要稍加修改,我只有一个 Archlinux,没办法测试。

新建 /etc/rc.d/firefoxpro 文件,贴上下面的内容

#!/bin/bash

. /etc/rc.conf
. /etc/rc.d/functions

case $1 in
start)
stat_busy "Copying Firefox profile to tmpfs"
if [ ! -d "/tmp/.mozilla" ];then
mkdir /tmp/.mozilla
cp /var/local/mozilla.tar /tmp
tar -xpf /tmp/mozilla.tar -C /tmp
mv /tmp/mozilla.tar /var/local/mozilla-old.tar
chown clayton:users /tmp/.mozilla ###注意这里,需要将clayton改为你的用户名
add_daemon firefoxpro
stat_done
else
stat_fail
fi
;;
stop)
stat_busy "Backuping Firefox profile from tmpfs"
if [ -d "/tmp/.mozilla/firefox/njgmwi0t.default" ];then ###注意这里,要改为你的xxx.default目录名
cd /tmp && tar -cpf /tmp/mozilla-new.tar .mozilla/*
mv /tmp/mozilla-new.tar /var/local/mozilla.tar
rm -r /tmp/.mozilla
rm_daemon firefoxpro
stat_done
else
stat_fail
fi
;;
restart)
$0 stop
sleep 1
$0 start
;;
*)
echo "usage: $0 {start|stop|restart}"
esac
exit 0


别忘了给于执行的权限

chmod a+x /etc/rc.d/firefoxpro


编辑 /etc/rc.conf ,把上面的脚本添加到 daemons 处,使其开机就执行

DAEMONS=( ... @firefoxpro ...)


ok,大功告成了。enjoy it 吧!

最后附上2个有用的小技巧。
  1. 压缩 .mozilla 目录下的sqlite3数据库
    首先把 firefox 关了,然后运行下面的命令,详见通过压缩数据库加速 Firefox
    for f in ~/.mozilla/firefox/*/*.sqlite; do sqlite3 $f 'VACUUM;'; done
  2. 分离 Firefox 的临时文件
    Firefox 会在 .mozilla 目录下的 Cache 里存储一大堆浏览网页时的临时文件,这些文件基本上可以无需备份,那我们何必还要将这些临时文件打包进tar包里呢?而且还能减少打包的时间。首先打开 about:config ,将 browser.cache.disk.parent_directory 的值改为 /tmp,没有就新建一个。重启 Firefox ,浏览一些网页后你会发现 /tmp 下多了这个 Cache 目录,里面就是这些杂七杂八的临时文件。


祝大家新的一年里,身体健康,万事如意!
Happy 牛 Year!!

没有评论:

发表评论