内存短缺是否会淘汰chromium,让ie重新伟大?
离谱但很好笑的提问,我也来个听起来离谱的结论吧。信不信由你,内存占用这么大就有 ie 的一份功劳。
为什么这么说呢?因为 ie 的一些硬伤,给后来的浏览器涨了不少教训。举个例子就是,ie 把几乎所有东西:浏览器的界面、打开的标签页、各种第三方插件(比如 Flash),全都塞进同一个进程里。相比多进程的浏览器,那必然是节省内存得多的。
但是,问题来了。任意一个网页里的 JavaScript 写得不好,陷入死循环了。甚至不排除就是恶意脚本。或某个插件崩溃了等等。你的整个浏览器包括你打开的所有标签页,有可能会一起变成白屏进入“未响应”阶段,最后就是憋屈的等着崩溃(闪退)。没保存的数据全部丢失。但凡那时候你用 ie 提交过什么大篇幅的文章,遇到过一次崩溃,都是终身难忘的。
如果说动不动崩溃,只是体验差。起码它内存占用低啊。那安全性问题就更致命了。这里也仅仅举一个例子:
早期的 ie 基本没有操作系统级别的防线机制。恶意网页可以利用浏览器漏洞“透过”网页获取你电脑的最高权限,植入木马都做得到。很多人以为是网页带病毒,严格来说是网页利用浏览器漏洞植入病毒。然后 ie 这东西还是捆绑操作系统更新的,很多人获取不到安全更新。说是祸害都不为过。
现在的浏览器,有严格的沙箱机制。渲染进程(一般是标签页)被剥夺了向操作系统读写文件和联网的权限。它通过浏览器主进程这个“代理人”去干这些事。所以无论网页有怎样的恶意代码都很难作用到宿主机系统上。
现在多进程架构的浏览器,本质上就是用内存空间换取稳定性和安全性。这两点很大程度上就是从 ie 获得的教训。所以我说了,现在的浏览器这么吃内存,有 ie 一份功劳。从这个角度看,ie 确实伟大。
我其实是赞同浏览器优化内存占用的,例如某些浏览器做了标签页休眠还能无感恢复。我感觉就是很好的功能。但在知乎上,至今你都能看到吹嘘 Flash、IE 这些东西的。也绝对是一个奇观了。