找回密码
 立即注册

QQ登录

只需一步,快速开始

教程经验总索引TVMW5/小日本5 索引【视频转换】小日本4/TE4XP 索引【视频转换】TAW4 / TDA3 索引【DVD打包软件】
Nero 索引DVD-Lab 索引【DVD打包软件】编解码器 索引 【必读】固顶帖011号
查看: 1898|回复: 2

[资料] 浏览器内核揭秘

[复制链接]

9328

威望

244

金钱

1万

贡献

管理员

自由的灵魂

积分
99815
主题
5263
回帖
26212
注册时间
2003-4-10
最后登录
2024-3-29
发表于 2012-9-7 10:30:56 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
本帖最后由 IsaacZ 于 2012-9-7 10:39 编辑

  

  目前浏览器产品繁多,网上经常有文章对各类浏览器进行比较,其中常常被提及的一个重要指标就是“浏览器内核”,究竟什么是内核呢?

  此外,双核浏览器近几年来异军突起,迅速占领了大片市场份额,那么什么是双核浏览器?双核和单核相比有什么区别,优势?

  为了解释上述的疑问,给同学们提供“选择浏览器”的依据,我们特地撰写了此篇文章。

  本文将为您介绍以下几个方面的内容:

  1:什么是浏览器内核;
  2:浏览器内核的作用;
  3:当前主流浏览器内核有哪些;
  4:浏览器内核对我有哪些影响;
  5:什么是双核?为什么要使用双核?以及双核的优势。

  浏览器内核其实就是浏览器的排版引擎,也被称为页面渲染引擎(RenderingEngine)。所谓引擎,即对一组核心功能模块的统称,这组功能模块提供API调用接口,供外部调用。

  举个例子而言:浏览器内核,相当于汽车的发动机部分,没有发动机,汽车外表再漂亮也跑不动。

  
  
0.jpg
图表 1 浏览器内核


  
那么浏览器内核主要做什么事情呢?如下表所示:
1:网络功能:请求网络链接,接收网页数据;
2:对网页语法进行解析(HTML、JavaScript、CSS);
3:对网页进行布局、渲染和显示;

  由于不同的浏览器内核对网页语法的解释不尽相同,因此同一网页在不同的内核的浏览器里的展现有可能是不同,这也是网页编写者需要在不同内核的浏览器中测试网页显示效果的原因。

  
1.jpg
图表 2 不同内核可能导致不同页面效果


  如果加上一些几乎没有什么人在用的内核,那么浏览器内核大约有10款以上,甚至更多,不过通常我们比较常见的大约只有四种。

  一:四种主流内核

  Trident(IE浏览器采用的内核)

  Trident内核,又被很多人称为IE内核,这是由于该内核与微软的渊源很深。为了规范起见,我们将在下面的文章中将其统一称为Trident。该内核是微软在Mosaic代码的基础之上修改而来的,于1997年在IE4中首次被采用,并一直沿用到目前的IE9。Trident为闭源引擎,所以开发者无法直接修改或封装该内核,不过微软提供了相应的调用接口。

  由于微软将IE捆绑在Windows平台上,所以在浏览器的内核领域,Trident很长时间内都是一家独大。这种情况导致的后果有利有弊:

  1:国内大量的网站插件(例如银行网站的插件)都基于该内核支持的ActiveX格式,使得IE浏览器具有很强的普适性。举例而言,大家通过网上银行转账,基本都会使用IE浏览器;

  2:Trident内核曾经在很长时间没有更新(老大一般懒得动弹),几乎与W3C标准脱节,其速度也差强人意;不过现在微软已经致力于将其做得更好,如Win8消费者预览版上的IE10就已经有长足的进步,对WebGL也提供了支持。

  总的来说,Trident内核有点像以前的日不落帝国,占领的地域广阔(使用率高),是很长时间的霸主(几乎所有的网站都会兼容他),保守而高傲,但现在由于受到诸多挑战,而斗志高涨,奋力前行,我们拭目以待其后续发展。

  除IE浏览器外,目前世面上有很多采用Trident内核的浏览器涌现,如:Maxthon、The World 、TT、GreenBrowser、AvantBrowser等。

  WebKit(Chrome浏览器使用的内核)

  WebKit其起源可追溯到KDE( KDesktop Environment )【1】。WebKit所包含WebCore排版引擎及JavaScriptCore解析引擎,均是从KDE的KHTML及KJS引擎衍生而来,它们都是自由软件,在LGPL【2】条约下授权,所以WebKit也是自由软件,开放源代码。

  Apple将KHTML发扬光大,在其基础上创建了WebKit分支,并推出基于该引擎的Safari浏览器,该浏览器是Mac OS X平台默认的浏览器。此外,WebKit内核在手机上的应用非常广泛,例如 Google 的手机 Gphone、 Apple 的 IPhone, Nokia’s Series 60 browser 等所使用的 Browser 内核引擎,都是基于 WebKit。

  挑战微软的,一般是Google,微软的浏览器基于Trident,Google出产的Chrome浏览器则采用WebKit引擎。那么两个引擎有什么区别吗?


Trident
WebKit
是否开源
对HTML5的支持
支持小部分(在持续增加中)
支持大部分在持续增加中)
运行效率
一般
高效
文档
接口描述文档
文档多,易于学习
代码是否清晰
由于不开源,所以不知道
代码清晰,易于维护与封装
对网页插件的支持
支持ActiveX插件,不支持NPAPI格式插件
支持NPAPI格式插件,不支持ActiveX格式


  从上面的论述可以看出,WebKit内核,是一个有很深背景(KDE、Apple)的新贵,在很多方面要优于Trident内核,但是,由于长时间以来,互联网界广泛使用IE浏览器,很多插件或多或少的依赖于Trident内核,这种习惯带来的势力范围,不是WebKit内核可以取代的。所以很长时间内,这两种内核必然是共生共存。事实上,已经有很多双核浏览器出现了,即:同时基于Trident和WebKit,并可以在两个内核间进行切换。

  Gecko(Mozilla FireFox火狐浏览器采用的内核)

  Gecko引擎是网景公司于1998年开发的。2003年7月15日,时代华纳解散了网景公司,同时成立Mozilla基金会,继续推动Gecko的发展。

  Gecko完全开源,这点和WebKit是相同的。

  说句实话,很难对Gecko和WebKit进行比较,因为两者都具有很大一批狂热的追捧者。而我本人,也同时使用基于Gecko的Firefox,和基于WebKit的Chrome。当我觉得Firefox的网页打开有点慢了,就会用Chrome开启同样的网页;当我要上雅虎邮箱时,就会选择Firefox。

  不过从代码的复杂度而言,Gecko要高于WebKit。Gecko因庞大与复杂的代码基础而频遭诟病。基于Gecko的Firefox非常强大,但存在高内存占用现象。

  Gecko内核过于复杂的原因是:由于Mozilla庞大的野心,Gecko意图提供除了HTML渲染之外的更多功能,如浏览器、邮件和新闻组程序、Web设计工具、IRC聊天工具。除了渲染HTML,Gecko还要提供一种应用广泛的,基于XML的用户界面生成引擎,XUL。XUL被用在所有这些程序中。XUL现在仍用在Firefox中,用来生成用户界面,因此造就了Firefox最有价值的重多扩展应用。

  Gecko 和 Webkit 之间有很多东西可以互相学习,无论谁替代谁都是没有道理的,这不是“东风压倒西风”,而是互补共存。

  Presto(Opera浏览器采用的内核)

  大名鼎鼎的Opera浏览器使用的是Presto内核。该款引擎的特点就是“快”,网络上不少文章宣称:Presto对JavaScript的解析有着最快的速度。不知道和Google的V8相比如何?很多测试文章的结论是:Presto内核执行同等JavaScript所需时间仅为Trident和Gecko的1/3。

  然而由于其商业引擎和闭源的特性,所以在很大程度上限制了Presto的发展与推广。除Opera使用Presto,NDSBrowser、WiiInternet Channle、Nokia 770等也使用该引擎。

  上述4种内核的一些基本情况,列举如下:

开源
插件支持
应用浏览器
操作系统支持
Trident
闭源,但提供调用接口
ActiveX
Internet Explorer(IE)
Windows
WebKit
开源,遵从LGPL协议
NPAPI
Chrome、Safari
Windows,
Mac OS X, Linux/BSD
Gecko
开源,以多种许可协议进行授权发行,包括MPL、GPL和LGPL
NPAPI
Firefox
Windows,
Mac OS X, Linux/BSD
Presto
闭源,商业内核
NPAPI
Opera
Windows,
Mac OS X, Linux/BSD


  二:双核浏览器

  什么是双核?为什么要使用双核?

  如前所述,当前主流浏览器内核主要有4种:Trident、WebKit、Gecko、Presto。这些内核各有所长,亦有所短。其中以Trident内核使用最为广泛,支持的网页最多,尤其是国内的网银系统,和支付系统大部分只支持Trident内核,所以使用Trident的最大优势在于其方便,一路通途;而WebKit内核以速度快捷,对HTML5支持好,而倍受青睐,但兼容性始终是其软肋。

  很多人就在思考:能不能开发这样一款浏览器,同时集中了Trident和WebKit两种内核的优点,形成一个互补,为用户提供更方便、快捷的上网方式。

  
0.jpg
图表 3 双核浏览器应运而生


  于是,双核浏览器应运而生了:提供一个切换按钮,当用户浏览普通网页时,使用速度快的WebKit内核,很多浏览器称之为“极速模式”;当需要使用网银或者支付系统时,则点击切换按钮,切换到Trident内核,又称为“兼容模式”。

  这样一个浏览器,可以切换不同的内核,满足用户对“快捷”和“方便”的需求。

  双核浏览器一经推出,便迅速得到网友的青睐, DCCI互联网数据中心在《2011中国浏览器用户调查》一文中宣称,约19.4%的中国网民在上网时选择使用双核浏览器。目前这个趋势还在不停的上升之中。

  国内的双核浏览器主要有:QQ浏览器、遨游浏览器、搜狗浏览器等。

附录:
1:KDE是Linux上第一个真正的桌面,所有KDE计划的代码全部按LGPL/GPL发布。
2:LGPL是 GNU Lesser General Public License (GNU宽通用公共许可证)的缩写形式,旧称GNU Library General PublicLicense (GNU 库通用公共许可证),后来改称作LesserGPL,即为更宽松的GPL,在宽松程度上与BSD, Apache,XFree86 许可证相似。
IsaacZ的发言中如果提到任何字母缩写或专有名词,在本论坛中一般都能搜索到。点此立即搜索点拨论坛。如有搜索不到的,请尝试搜索百度百科,或者跟帖提问。
发帖前请注意看置顶帖。如果你发现自己的问题没有得到回答,说明你的问题提错了地方或者提问前未先阅读本版规则固顶帖011号

0

威望

6566

金钱

6

贡献

高级会员

积分
6656
主题
2
回帖
190
注册时间
2011-4-26
最后登录
2018-1-28
QQ
发表于 2012-9-8 20:12:26 | 显示全部楼层
学习了,谢谢站长
回复

使用道具 举报

535

威望

1925

金钱

796

贡献

超级版主

积分
7030
主题
203
回帖
399
注册时间
2004-11-10
最后登录
2017-12-28
发表于 2012-9-25 12:05:56 | 显示全部楼层
开发人员的恶梦,一个项目下来,不知道要花多少时间来做浏览器兼容性修复。。。一个像素,都是问题
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|点拨论坛

GMT+8, 2024-3-29 13:55 , Processed in 0.513363 second(s), 8 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表