拜托,最重要的原因,难道你们不觉得Chrome真的很快吗
这里有一篇文章,来自google的程序员lya Grigorik谈Chrome的高性能网络设计(需要翻墙):
https://www.igvita.com/posa/high-performance-networking-in-google-chrome/
专业方面的优化就不在这里阐述了,可能大部分人对计算机网络原理还不是那么理解。摘一些大家能看得懂的优化:
1. Chrome’s Predictor:
Chrome内置有非常强大的预测系统,当你在浏览器的地址栏上(Omnibox)一边输入网址的时候,Chrome就已经根据你的输入尝试去判断你要访问网址,并且开始加载(或者DNS解析,与其他浏览器不一样,Chrome使用的并非是系统自带的DNS解析Client,而是使用自己内置的DNS解析工具)。
所以有时候难道你们不觉得网页是秒开吗(至少我自己有这样的体会),在输入完网址敲回车的时候就能立即打开网页。因为Chrome早就猜到你要访问,已经在后台加载好了(你可以这么理解:Chrome已经为你打开了一个你想访问网站的标签页,但是暂时隐藏了,在你敲击回车的那一刹那,Chrome把它显示出来了,所以你会觉得秒开)。
既然是预测,当然不是百分之百准确的。它也会根据用户的输入不断的调整,并记录不同关键字访问站点的概率,并且这些你都可以看到,对用户是透明的:
请在浏览器中输入 chrome://predictors
然后你就能看到这样的图片(这个截图不是我个人的),右边的Confidence栏就代表了对这个关键字和用户可能访问的对应网站的概率,当然是越高越好,hit count和miss count字段的含义当然也不言而喻了
不仅仅是在地址栏输入的时候,甚至在你鼠标悬浮到某一个链接上的时候,Chrome就开始去对链接的主机进行DNS解析和TCP连接
2. Chrome目前采用的是 process-per-site模式,也就是说同一站点(可能多个tab标签)共用同一个进程(其他的模式有:一个标签使用一个进程,整个浏览器使用一个进程),这样的好处是保证了某一个站点的崩溃不会影响到其他站点。在IE下面你肯定有这样的经验:打开某个网站的时候卡住了,导致了整个IE都不能响应了。但是Chrome这么做避免了这个问题。并且多个站点共用的话能够保证建立起来传输数据的管道重复利用,不用发出新的请求,建立新的链接。
BTW:知道为什么访问一个网址为什么慢吗,时间去哪儿了吗?
大部分的时间都花在了网络请求上。这也是为什么Chrome要在网络优化上下大功夫。排名第二位的是Javascript脚本的执行。个人觉得现在的V8引擎似乎不算很大的优势了,IE也说自己的执行效率高,Safari也说自己的执行效率高。但个人没有用banchmark(性能基准测试)测过。
你们想看看自己Chrome里有关网络的一切?请在地址栏里输入:chrome://net-internals
什么DNS、Cache、Prerender(上面说的预先加载的页面)、目前可用的Socket都一览无遗。当然要你们感兴趣和看的懂才行。
暂时觉得以上两点还算比较通俗的,可以和大家分享。
注意,以上的优化方案主要存在于桌面端,而并非在移动端。移动端的浏览器架构和桌面端会有不同
最后:这一切都是需要代价的!代价就是占用内存和CPU资源!所以快或者慢见仁见智吧
其他浏览器有没有做这方面的工作呢?我不知道,或许有吧,但是我没有找到其它浏览器优化方面的文献和资料。
给大家一些浏览器厂商自己的官方博客,每次有了更新和提升一般他们都会发布在博客上。但说实话都不如Chrome来的这么彻底、透明:
Chrome:http://chrome.blogspot.com/
IE:IEBlog – Site Home
Wekit:The WebKit Open Source Project
——–更新1.0:
针对楼主的几个问题回答一下:
但 Chrome for Mac 的页面滚动效能、耗电量、内存和 CPU 占用、JS 加载速度都没有 Safari 好
Chrome的确耗电量和使用内存和CPU更多,但就像我上面说的,这些消耗都是为了保证更好的浏览体验,在后台做了非常多的优化动作。IE的占用资源想必很少吧,但用IE浏览网页也一定很不爽吧
JS加载速度这个并不准确,个人理解应该为JS的执行效率。我上面也提到了,这两年IE和Safari的脚本执行引擎都有突飞猛进,在各种大会上都在展示和其他引擎执行的效率对比,并不输于Chrome。但我想说的是,其他的浏览器厂商仅仅是在这一两年追赶上来而已。如果拿倒退一些年的数据相比,Chrome还是非常有优势的,也是它因为“快”而积累了相当一部分用户的原因。
什么插件是 Chrome 独占而且不可替代不可或缺的吗
必须承认Safari的拓展一定不如Chrome丰富。但我觉得这可能和苹果没有做这方面的推广和鼓励开发有关(应该不会存在开发方面的技术问题)。其实Firefox的拓展做的非常好,相对Firefox,Chrome也只是后来居上而已,楼主可以不必纠结于Safari与Chrome,Firefox也是一个不错的选择。
——–更新2.0:
有的朋友在答案下给我留言,告诉我搜狗浏览器和Safari也有类似于预先加载的功能。我还没有去关注过,所以在文章里暂不给出肯定的回答——我相信有。其实有也并不稀奇,看这么多年的浏览器发展,不同浏览器衍生出来的优化方案都是很相似的,比如从IE8开始的Pre-loader机制(没错,这一次IE遥遥领先于其他浏览器喔):How the Browser Pre-loader Makes Pages Load Faster ;又比如使用GPU加速。
但是:所谓的优化不仅仅是这一项而已,我在开头举例的哪一篇文章中描述了非常多Chrome底层做的优化,在知乎上不是三言两语能够说清楚的,而我相信这些细节并不是大多数浏览器可以做到的;可能还涉及到Chrome架构的设计,有兴趣的同学可以看一看整个Chrome内部的架构设计文档:http://www.chromium.org/developers/design-documents。其中一些机制设计是非常值得借鉴的。
Chrome的优秀也不仅仅体现在对用户的友好。如果你对google的每年I/O大会和 http://html5rocks.com 有关注的话,每年它们都不间断会针对开发者提出一些新的开发者工具特性。这也是其它浏览器所已不能及的。
——–更新3.0
很多朋友都提到了flash的原因,个人理解是不是Chrome内置的Flash比较占资源,而使用操作系统内的比较不占? 那么可以停用Chrome内置的flash:
请在浏览器地址栏输入 chrome://plugins/ 在打开的页面中搜索 Adobe Flash Player
把上面一个内置flash停用吧
— 完 —
本文作者:李翌
【知乎日报】
你都看到这啦,快来点我嘛 Σ(▼□▼メ)
此问题还有 75 个回答,查看全部。
延伸阅读:
猎豹浏览器比之 Google Chrome,是否性能更加强劲?为什么?
Mac 上 Chrome 和 Safari 哪个更快?