作者:奔跑中的奶酪
假如电脑出问题了,该怎么办?
我听过最为简洁的解决方法是:重启电脑解决90%的问题,重装电脑解决99%的问题,重买电脑解决100%的问题。
那如果要是浏览器出问题了,该怎么办呢?
同理,我们可以推出结论:重启浏览器解决90%的问题,重装浏览器解决99%的问题,换用同类浏览器解决100%的问题。
可问题是,事情都是有代价的,这些解决方法越往后面,要付出的代价就越大,所以这个值得讨论问题。
一、分解问题可以将问题简单化
两宋时期,我国海上贸易空前繁盛,船只运输的安全性备受关注。水能载舟,亦能覆舟,船虽然能自如地漂浮在水面上,但船只一旦出现破损,水入船舱,如不能及时堵住漏洞,最终就会沉没。
在内陆河流的船只,如果船体破损还可能来得及靠岸修理,但如果是在茫茫大海上,就只能坐以待毙。正是出于对航行安全的担忧,中国人民发明了「水密隔舱」技术。——【引用自中国数字科技馆】
(水密隔舱 ↑)
水密隔舱技术被认为是我国的第五大发明,它在现代船舶设计中依然占有十分重要的地位。泰坦尼克号作为当时世界上最大的轮船,有着“永不沉没”的美誉,也同样采用了水密隔舱技术,然而不幸的是,在它的第一次航行中,泰坦尼克号主撞击冰山沉没了。
倒不是说水密隔舱技术不起作用了,而是泰坦尼克号作为当时世界上最大的轮船,船长无比骄傲,轮船高速行驶撞击冰山,把所有的水密隔舱都划破了。有学者计算,只要速度稍微慢一点,即使 4 个水密隔舱都被划破,泰坦尼克号也不至于沉入海底,可偏偏 5 个全划破了。
我们可以意识到,水密隔舱对于大型船只的建造是多么的重要。
(泰坦尼克号沉没演示图 ↑)
水密隔舱是一种将问题分解的思维,它可以将大问题分解成一个个小问题,将复杂问题分解成一个个简单问题,将整体问题分解成一个个局部问题。这样一来,一旦出现问题,也不至于牵一发而动全身。
二、软件里的“水密隔舱”
也就是说,在设计事物时,我们应该将可能发生的问题分解为多个部分,使它不会因为一个小问题而导致全盘出错。
在大型软件的设计上,水密隔舱的思维也同样得到了运用。比如浏览器不同功能模块的数据,会被储存在不同的文件上,如果哪个地方出错,我们只需要修复出错的数据文件就可以了。
下面是 Firefox 和 Chrome 常见数据的保存位置。
1、Firefox 浏览器:
在浏览器地址栏输入 about:profiles 即可查看配置文件所在位置。
[ bookmarkbackups ]:自动备份的书签文件。
[ chrome ]:UC脚本文件夹。
[ extensions ]:拓展文件夹。
[ storage]:拓展数据文件夹。
places.sqlite :书签、下载记录和浏览记录。(可以用来恢复书签)
favicons.sqlite:书签图标。(可以用来恢复书签图标)
key4.db 和 logins.json:浏览器登录。(如果分享配置给他人,一定要删除)
permissions.sqlite 和 content-prefs.sqlite:网站权限设置。(比如网站的弹窗、缩放级别等)
search.json.mozlz4:搜索引擎列表。
formhistory.sqlite:自动完成历史。(搜索框的输入历史)
cookies.sqlite:Cookies 存储。(网站首选项和登录状态等信息)
webappsstore.sqlite:DOM 存储。(比 Cookies 更大更安全的储存信息)
handlers.json:安全证书设置。
sessionstore.jsonlz4:下载动作设置。(打开某个文件时 Firefox 应该做的动作)
xulstore.json:会话保存。(保存当前打开的标签页)
cert9.db:自定义工具栏。(窗口和工具栏的位置、大小)
prefs.js:用户首选项。(保存修改过的用户首选项设置)
user.js :用户首选项。(限制某些用户首选项被修改)
2、Chrome 浏览器:
在浏览器地址栏输入 chrome://version 即可查看配置文件所在位置。
[ Extensions ]:拓展文件夹。
[ IndexedDB ]:拓展数据文件夹。
[ Local Extension Settings ]:拓展数据文件夹。(本地)
Bookmarks:当前使用中的书签。
Bookmarks.bak:自动备份的书签。
Cookies:Cookies 存储。
Favicons:书签图标。
Login Data:浏览器登录。
History:浏览记录和自动完成历史。
Preferences:用户首选项。
Shortcuts:自定义快捷键。
Web Data:搜索引擎列表。
三、浏览器升级和故障排除方法
如何在更新浏览器的同时保留原来的数据
1、Firefox 升级方法:
(1),登录 Firefox 帐号,书签就会自动同步,拓展和用户脚本建议手动更新,同步容易出错。
(2),转移旧版书签和历史记录,覆盖 places.sqlite 到新版的同名文件。
(3),转移后的书签图标是空白的话,覆盖 favicons.sqlite 到新版的同名文件。
(4),转移旧版搜索引擎列,覆盖 search.json.mozlz4 到新版的同名文件。
(5),如果你有自己的内容修改,建议备份保存修改内容,然后再重新添加到新版本里去。
3、Chrome 升级方法:
(1),转移旧版书签,覆盖 Bookmarks 到新版的同名文件。
(2),转移后的书签图标是空白的话,覆盖 Favicons 到新版的同名文件。
(3),转移旧版搜索引擎列,覆盖 Web Data 到新版的同名文件。
(4),转移旧版快捷方式,覆盖 Shortcuts 到新版的同名文件。
(5),转移旧版用户设置,覆盖 Preferences 到新版的同名文件。
(6),如果你有自己的内容修改,建议备份保存修改内容,然后再重新添加到新版本里去。
3、浏览器故障排除方法:
因为浏览器功能和数据库的相对独立,当浏览器出问题时,我们可以通过尝试禁用一些拓展或者脚本进行排查,方法如下:
(1),禁用用户样式拓展,比如 Stylish,xStyle,Stylus 等。
(2),禁用用户脚本拓展,比如 ViolentMoneky,Tampermonkey,Greasemonkey 等。
(3),禁用重定向拓展,比如 Redirector,Header Editor,Modify Headers 等。
(4),禁用广告过滤类拓展,比如 Adblock Plus,Ublock Origin,广告净化器 等。
(5),如果都不行,则尝试禁用所有浏览器拓展,可以分批禁用。
(6),如果是 Firefox 浏览器,则还可尝试禁用 UC 脚本,可将 chrome 文件夹名称改成其他的,然后重启。