Firefox是Linux用户首选的浏览器,对其不作过多的介绍。只要看看LDCN的访客留言就知道他的流行程度了。
Firefox虽然是一款优秀的浏览器,但是不免还有些不足。对我而言,最大的不足就是其性能,简单的说,刚开始用很流畅,用久了,会越用越卡。
今天琢磨了一下Firefox,分析下Firefox卡的原因,并通过设定相关参数解决了这个问题。从此上网变得更加畅快!
—–
我的Firefox用户目录(~/.mozilla/firefox)是从Ubuntu 7.10时开始建立的,前前后后用过十几个插件,经历了从Firefox 2到Firefox 3,从Ubuntu 7.10到Ubuntu 8.04。
在Ubuntu 7.10的Firefox 2时,就遇到卡的问题,常常界面灰掉。
等到Ubuntu 8.04的Firefox 3,情况好一点,但是还是卡。后来我用极致编译参数编译了回Firefox 3.0,情况好了点,地址栏反应快了一点点,仅此而已。关闭Firefox的时候,还是会有很长的停顿时间,有时还卡死。
虽然重新建立用户目录会解决问题(即把~/.mozilla/firefox删除掉),但是相当多的资料/插件要重来,这个代价受不了,所以还得从Firefox本身动手脚。
查阅了相关资料,终于发现是由“历史访问”和“位置”引起的。
这个可不是我们能看到的“历史记录”和“地址栏”的已访问纪录,而是数据层面的。
让我们来看看,你的数据是不是过大了
查到数据库的大小
来到~/.mozilla/firefox/***.default(因人而异),下面有一个places.sqlite文件,看看它的大小。如果超过了10MB,理论上就能引起Firefox卡了。像我是21MB,一般用了一年左右的话,会有这个程度。
这个文件里存了些什么呢?让我用SQLite Manager这个扩展来看看:
在moz_favicons这张中,存了1500多个站点的Favicon,就是网站的Logo图标
moz_historyvisits这张表中,保存着所有访问过的纪录,我这里是六万条!
而moz_places这里存着近三万多的places:地址,标题和反转域名信息。
这些数据量到底对Firefox的性能有啥影响呢?我试着把places.sqlite改了个名,然后重启Firefox。
所有的停顿和卡都不复存在了!Firefox变得非常流畅。
当然问题是所有的历史纪录和地址栏信息都没有了,相当于起到了彻底“清除隐私纪录”的作用,只是这个的程度比“工具”->“清除隐私纪录”更深。
于是得出结论,在使用Firefox当中只要你要访问网站,它就会频繁的操作这个数据库,因为数据库很大,就影响了查询效率,所以会卡。而在关闭Firefox时,要对数据库作写入保存的操作,因为文件大,所以停顿很久也就不奇怪了。
清理数据
查明了是这个文件里面数据太多的原因,如果你对当前的历史和纪录没什么要求的话,直接删除就行了。
或者也可以用“工具”->“清除隐私纪录”,指定一些删除选项,也会有不错的效果,不过这并不能使文件变小,你需要用SQLite Manager,然后选择好数据库,并Database->Compact Database。这样会压缩数据库,使文件减少。
如果你熟悉Sql数据操作,那就更好了。可以有所保留地清理数据库。
在moz_places这张表中,有个字段(frencency)记录着每个条目的“频繁程度”,通过这个,你可以把一些不常使用的纪录全都通过sql语句查询并删除掉。只留下一些常用的纪录。
比如不常用的纪录frencnecy值一般为0,两三天才访问一次的网站可能为140,而我每天上的Gmail是6000!
永久性优化
“OK,我也会手动清理历史纪录,让我的Firefox快起来,问题是如何让它不再慢下去呢?”
我们来更改一个Firefox的隐藏设定,让它少记录点条目,我们就可以不用定期去清理它了。
在地址栏输入:about:config,过滤器中输入history,注意图中的以browser.history_expire_为前缀的条目:
browser.history_expire_days:表示历史纪录过期天数,默认是180天!
browser.history_expire_days.mirror:这个不详,跟镜像有关?
browser.history_expire_days_min:是用户值,即在“Firefox首选项”、“隐私”、“历史”当中,表示“保存我的历史,至少X天”。即使你在首选项中把“至少X天”设置成了了1天,或取消,Firefox还是会保存浏览历史,因为系统保留值为180天。
browser.history_expire_sites:这个是最大保存的站点数量,默认是四万个。
也就是说,系统要么保存180天的纪录,要么保存四万个浏览纪录,不过我上面的moz_historyvisits怎么达到了六万个呢?可能是指moz_places这张表。
差不多搞明白后,把值设置成下面的样子,站点数保存四千个就够了,系统保存3天的浏览纪录,用户最少1天。那个mirror随便设置了个值。
需要注意的是,如果你没有手动清理过places.sqlite,仅仅设定了这些值的话,文件是不会有变化的。清理还是得手动来。
接下来,就用实践来检验一切了,再过个半年查询一下places.sqlite的纪录,看看是否是被限制在了四千以内,这样的话Firefox应该再也卡不起来了。
另外,建议把“首选项”,“安全”,把有关”嫌疑攻击站点“和”伪造站点“的两个选择勾掉,有关这两个东西的文件也会相当大。不过没有places.sqlite夸张罢了。





本质的原因是内存泄露吧,关掉访问过的页签不释放内存。只有当整个进程退出才释放内存。不过历史记录这个问题也是有的,官方应该快解决这个问题了吧?因为3.0已经好多了。
回复
2008年09月26日 星期五 5:44 下午
显示系统和浏览器这个东西不错,测试一下Chrome什么样?
回复
2008年09月26日 星期五 5:46 下午
QQ1.0pre2出了,TX快发新闻吧!:)
回复
2008年09月26日 星期五 7:58 下午
刚刚打开你的网站是,提示
网站超限
当您看到这个页面的时候,代表您租用的虚拟主机出现如下问题:
1> 瞬间的CPU过高(例如程序效率过低引发的CPU长期占用)
2> 网站的瞬间并发过高(例如大量访问和在线的论坛)
3> 网站的页面过大或者由于做下载站等等导致瞬间型占用过高(例如flash站,视频站,mp3站,软件站)
遇到该情况,请稍候访问(10分钟左右即可自动正常),但您应该迅速按照立即分析和解决问题.否则可能重新出现
感谢您对我公司虚拟主机的支持.也希望您能够满足虚拟主机的规约,让大家都能够快速、稳定地使用.
任何问题,可以随时访问我公司网站并联系我们:
点此访问浪点主机官方网站
回复
2008年09月26日 星期五 9:00 下午
@Error
是的,虚拟主机超负荷了。主要是被外链了很多,带宽被占尽的原因吧。
做站不容易,还要供别人呢!
回复
2008年09月26日 星期五 10:12 下午
我的22.3M……
回复
2008年09月27日 星期六 1:50 上午
嗯…有显示OS和Browser了,不改Agent的同学该不好意思了
回复
2008年09月27日 星期六 7:29 上午
把FireFox的Cache和./mozilla放到tmpfs去或者干脆把firefox的运行目录也放到tmpfs中,速度才会有飙的感激。
回复
2008年09月27日 星期六 8:48 上午
我的9.5M,第一次用地址栏会卡。
回复
2008年09月27日 星期六 8:51 上午
我的只有一个urlclassifier2.sqlite,15M。FF2.0的。
回复
2008年09月27日 星期六 9:18 上午
对应windows下面就是修改“C:\Documents and Settings\*****\Application Data\Mozilla\Firefox\Profiles\******.default”里面的places.sqlite文件。
回复
2008年09月27日 星期六 10:33 上午
39,864 Cache
14,996 urlclassifier2.sqlite
12,684 extensions
这个是我最大的三个目录,总目录大小是89,420
回复
2008年09月27日 星期六 11:02 上午
显示企鹅的都是什么Linux系统呢? TX,还有哪些图标不全?
回复
2008年09月27日 星期六 11:41 上午
哈哈,我也有我自己的域名咯~
火狐的话我用起来怎么不会卡呢?
回复
2008年09月27日 星期六 2:50 下午
我有个urlclassifier3.sqlite,居然有50M!
回复
2008年09月27日 星期六 3:20 下午
最新的QQ pre2 你们能成功发送截图吗?
回复
2008年09月27日 星期六 3:29 下午
@WindyWinter 我的51.6~~~
其实,我是来测试图标的 =_=!
回复
2008年09月27日 星期六 7:37 下午
其实,很多人觉得 linux 下 firefox 速度慢,完全是 nvidia 显卡驱动的问题。nvidia 一日不提高 linux 驱动的 2d 性能,fx 就会慢一日(而且越来越多的软件会慢,像 KDE4)。这种情况,如何修改 fx 都是缘木求鱼。
回复
2008年09月27日 星期六 9:04 下午
kde4下还不如opera速度快,即使你删除.mozilla又如何?你的扩展在~/.mozilla/firefox/*.default/extensions/下,书签在~/.mozilla/firefox/*.default/bookmarkbackups/下,保管好这2样就ok了
回复
2008年09月27日 星期六 9:19 下午
SQLite Manager 很强大啊。
urlclassifier3.sqlite 50M+ 压缩到了20M+;
places.sqlite 16M+ 压缩到了900多K…
回复
2008年09月27日 星期六 10:08 下午
汗~我已经麻木了。
实在太卡。
回复
2008年09月27日 星期六 11:03 下午
认为是Nvidia不良2D驱动造成的 +1
另外就算把整个Firefox含设置档都丢到tmpfs, 肯定也不会有明显的速度差异,在下试过很多次啦,不信你拿个码表量量看!
另外OS本身也会造成差别
FX任何Linux版本的速度都肯定是输Windows版本的一大截!
但偶听说Fx 在 Arch / Gentoo上头都远没有Ubuntu那么卡
回复
2008年09月27日 星期六 11:17 下午
这个网页的OS判断有问题
我是用Ubuntu的 (FX是官方的bin档,非apt-get安装)
却没有显示ubuntu logo
回复
2008年09月27日 星期六 11:23 下午
我也来测试图标的,SUSE11+FF
其实很多人说FF卡的原因基本都在说flash n_n
回复
2008年09月28日 星期天 12:27 上午
不觉得卡,,,难道是因为我没用过快的?
其实,最最万恶的,是Adobe!
系统上唯一一个私有软件,就是它的。
还经常害死FF。
BTW. 没有 IceWeasel 的图标么,很漂亮的说。
回复
2008年09月28日 星期天 2:33 上午
得,我还没发现啊,原来你这的回复会收集用户信息吖,哈哈哈
回复
2008年09月28日 星期天 9:17 上午
我再顺便说一下,fedora的图标真难看
回复
2008年09月28日 星期天 9:18 上午
有个问题,places.sqlite无法直接用sqlite manager打开,好像是文件被锁定了
回复
2008年09月28日 星期天 9:34 上午
我自己机器上.sqlite数据库有54M..也不卡啊..
才这么点数据量查询应该速度不慢的
回复
2008年09月28日 星期天 12:04 下午
看了这个文章我决定挂个监视系统的APPLET,用了一段时间发现果然FF是linux下面一切不稳定的根源阿,现在主要用OPERA了,连compiz都没有再崩溃过,FF只在开发的时候用。
回复
2008年09月28日 星期天 1:04 下午
地址栏的数据才叫大,上100M。
回复
2008年09月28日 星期天 1:45 下午
我也测试一下
回复
2008年09月28日 星期天 1:45 下午
呵呵,arch测不出来嘛?还是arch没有标识系统名称?
回复
2008年09月28日 星期天 1:46 下午
FF有时开二十几个标签页都不卡,可是对于花哨的网站特别容易卡,可能真的与flash有关。
回复
2008年09月28日 星期天 2:27 下午
urlclassifier3.sqlite这个文件确实很大,不知道是干什么用的?
回复
2008年09月28日 星期天 6:00 下午
可以? xp行么
回复
2008年09月28日 星期天 6:15 下午
[...] News, Movie News, Music News, TV News – PopEater • VoxCards: Greeting Cards With Voice • 彻底优化让Firefox不再卡 • Bloglovin: Blog Reading Made Easy • The 7 Weirdest and Wackiest Uses for WordPress • The [...]
2008年09月28日 星期天 7:57 下午
现在主要用opera
回复
2008年09月29日 星期一 2:41 下午
测试图标,嘿嘿
回复
2008年09月29日 星期一 6:47 下午
同楼上
回复
2008年09月29日 星期一 11:37 下午
15M 只有第一次用地址栏会小卡一下
回复
2008年09月30日 星期二 1:47 上午
Firefox 吃内存一直是个问题阿,不过越来越好了
回复
2008年09月30日 星期二 12:16 下午
LDCN太久沒更新了吧?
回复
2008年10月01日 星期三 12:18 下午
更新很慢阿
回复
2008年10月01日 星期三 2:13 下午
用了后还没有明显改善,还有其他方法吗?
“把FireFox的Cache和./mozilla放到tmpfs去或者干脆把firefox的运行目录也放到tmpfs中,速度才会有飙的感激。”
具体是怎么做呢?
回复
2008年10月01日 星期三 7:14 下午
我也测试一下图标
回复
2008年10月02日 星期四 2:04 上午
测试图标
回复
2008年10月02日 星期四 2:06 上午
博主去旅游了吧?十一回来应该更新了吧
回复
2008年10月02日 星期四 11:15 上午
我也想来测试图标。。。
回复
2008年10月02日 星期四 9:52 下午
我这个呢?
回复
2008年10月03日 星期五 12:40 上午
楼主这个方法不妥。起码在我机上的情况跟楼主描述的问题就完全不吻合。我这边主要是Flash(特别是Flash小广告)和JavaScript的问题。
还不可以这么早下定论……
回复
2008年10月03日 星期五 7:48 上午
flash卡是肯定得了,最好的办法是尽量别开。。。。
回复
2008年10月03日 星期五 7:33 下午
测试图标
回复
2008年10月06日 星期一 9:21 上午
测试
回复
2008年10月08日 星期三 9:33 下午
方法不错,收藏。
回复
2008年10月09日 星期四 5:36 下午
更新到3.1了,好多扩展不能用,希望FX在内存上能有更大的改进。
回复
2008年10月09日 星期四 10:30 下午
好吧,我是nv的卡,arch,之前ff超级慢,切换标签的时候鼠标都会卡。。。换了swiftfox快乐不少。。。
回复
2008年10月12日 星期天 9:25 上午
我是来测试os的
回复
2008年10月16日 星期四 2:29 上午
嘿嘿
回复
2008年10月18日 星期六 2:09 上午
一般都是因为flash的缘故吧,现在的网站越做越花哨,我都是直接把flash关掉的
回复
2008年10月22日 星期三 6:17 下午
测试图标,呵呵
回复
2008年10月23日 星期四 6:12 下午
[...] – 彻底优化让Firefox不再卡 中文关键字: 请您留下评论 | [...]
2008年11月14日 星期五 10:45 下午
使用上述方法优化会造成无法保存书签,如发生这种现象,
先检查 配置文件夹下 的 places.sqlite 和 places.sqlite-journal 能不能读写, 把权限设好.
还不行就先 在管理书签里备份书签, 删除上面两个文件, 启动 firefox , 让这两个文件重建, 然后导回刚才备份的书签.
再不行就只能删除 ~/.mozilla 了, 注意备份好重要的文件包括下载的扩展, 这能解决绝大多数问题.
摘自Ubuntu中文论坛http://forum.ubuntu.org.cn/viewtopic.php?f=73&t=151144&start=0&st=0&sk=t&sd=a
作者hecha
希望对大家有帮助!!!!!!!!!!!!!!!
回复
2008年12月02日 星期二 9:15 上午
[...] 的彻底优化让Firefox不再卡 和 galeki的通过压缩数据库加速 Firefox [...]
2009年01月08日 星期四 4:54 下午
[...] 尽管3.0版firefox有很大进步,但对于我这种firefox重度使用者,仍然是偏慢。在使用了TualatriX介绍的优化方法后,的确好转了很多。但在20个以上的标签页间进行切换,仍然是会出现缓慢的现象。于是狠下心来,将主目录下的 .mozilla 目录搬到内存上,发现切换标签页缓慢的现象还真的消失了!使用了一个多月,现在我打开30个以上的标签页也不会再慢下来了,感觉非常好! [...]
2009年01月25日 星期天 3:01 下午
深有同感,一直在找解决的办法,终于找着了,感谢分享
回复
2009年02月10日 星期二 9:56 上午
[...] 今天在玩聚SR的推荐里发现了这篇《彻底优化让Firefox不再卡》(是篇去年9月的旧文不知道怎么又冒头了),以前就深感Firefox用的时间长了就会变卡,怎么搞都没用,只有重做一条路,于是乎就想试试看。 [...]
2009年04月12日 星期天 10:01 下午
[...] 彻底优化让Firefox不再卡主要考虑限制places.sqlite文件的大小。与此相关的是限制Firefox中urlclassifier3.sqlite文件大小。Linux下pack FF sqlite数据库文件的命令如下。 for f in ~/.mozilla/firefox/*/*.sqlite; do sqlite3 $f ‘VACUUM;’; done [...]
2009年08月12日 星期三 3:47 下午