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夸张罢了。



转载请注明:转自Linux桌面中文网 - 彻底优化让Firefox不再卡




[更多查看原文]

点评 Trackback 收藏它 拍它!
挖上一个精彩
挖客给您推荐更多精彩!
挖下一个精彩

这些挖友臭味相投 · · · · · ·


挖友说 · · · · · ·

 

匿名评论
(尊重网上道德,承担一切因您的行为而直接或间接导致的法律责任)

 

 
合作伙伴:   刷刷   煎蛋   动态网站制作指南   265上网导航   新新web2.0   9Fav就喜欢网   Linux桌面中文网   DigiArt   我爱水煮鱼   奇趣发现   IB资讯   天涯海阁
  职客网   乐婴网   cngadget   有意思吧   软件一千零一页  DiggLife  设计|生活|发现新鲜   掘客巴士  17Fav  掘图志   桑林志   91新鲜网   精灵的天下