关于浏览器内核的一些概念

什么是浏览器内核

要想搞清楚浏览器内核是什么,首先应该搞清楚浏览器的构成是怎样的。简单来说浏览器可以分为两部分:shell+内核。其中shell的种类相对较多,内核则较少。shell是指浏览器的外壳:如菜单,工具栏等。主要是提供给用户界面操作,参数设置等等;内核则是一些基于标记语言显示内容的程序或模块,它负责取得网页的内容(HTML、XML、图像等等)、整理讯息(如加入CSS)、计算网页的显示方式、然后输出至显示终端或打印机并解释执行客户端脚本。在浏览器中,shell通过调用内核来实现各种功能的。所以内核才是浏览器的核心,它的功能如何就决定了浏览器的特点和表现如何。浏览器的内核的不同对于网页的语法解释会有不同,所以渲染的效果也不相同。这就是了解浏览器内核对前端开发人员的意义所在。

浏览器内核又可以分成两部分:JS引擎和渲染引擎(layoutengineer或者RenderingEngine)。所有网页浏览器、电子邮件客户端以及其它需要编辑、显示网络内容的应用程序都需要内核。JS引擎负责解析并执行Javascript语言,以此实现网页的动态效果;渲染引擎则负责JS引擎以外的其它内核功能。最开始渲染引擎和JS引擎并没有很明确的区分,随着JS引擎越来越独立,人们所说的浏览器内核就仅指浏览器的渲染引擎了。

浏览器内核的分类

浏览器内核的种类很多,如加上没什么人使用的非商业的免费内核,可能会有10多种,但是常见的浏览器内核有以下四种:

1、Trident

2、Gechko

3、Presto

4、Webkit

一、Trident

Trident又称MSHTML,是微软开发的IE浏览器内核。它由于被包含在全世界使用率最高的操作系统Windows中,因此拥有极高的市场占有率。这也导致很多其它浏览器都使用这个引擎,例如QQ浏览器,Maxthon(最新版已经不使用)、360和搜狗浏览器等。但额外需要知道的是QQ浏览器,Maxthon和搜狗浏览器均是双核浏览器,了解这点对这些平台上的开发很有帮助。

由于这种内核比较流行,以前的很多网页都是根据它的标准来编写的。实际上这个内核对网页标准支持不是很好,甚至在2005年,与网页标准制定组织(W3C理事会)所制定的标准发生了脱节。同时Trident内核本身的BUG比较多,对一些符合W3C标准的网页代码支持不是很好。这在早期的IE版本中比较明显,比如IE5.5以前(包括IE5.5)。其实IE6对W3C标准的支持也不是很好,而我们现在仍然有相当一部分人在使用IE6,事实上它也属于一个比较早的版本。

二、Gechko

Gecko是用C++编写的开源渲染引擎,包括了SpiderMonkey(Rhino)。主要的使用者有Firefox、Netscape和Flock等。这个内核的优点就是功能强大、丰富,可以支持很多复杂网页效果和浏览器扩展接口。同时它还是一个跨平台内核,可以在Windows、BSD、Linux和MacOSX中使用。但是代价是也显而易见的,就是要消耗很多的资源,比如内存。

三、Presto

Presto由OperaSoftware公司开始的,用于Opera浏览器的渲染引擎。MacromediaDreamweaver(MX版本及以上)和AdobeCreativeSuite2也使用了Presto内核。

Presto是一个动态内核,页面的全部或者部分可随着DOM及Script语法的事件而重新解析。Presto内核附带的JS引擎被称为公认的浏览网页速度最快的,这得益于它在开发时的天生优势,在处理JS脚本等脚本语言时,会比其他的内核快3倍左右。缺点就是为了达到很快的速度而丢掉了一部分网页兼容性。此外,由于Presto是商业引擎,使用它的除开Opera,就只剩下NDSBrowser、WiiInternetChannle、Nokia770网络浏览器等少数几个了,很大程度上限制了Presto的发展。

四、Webkit

Webkit是一个基于KHTML(是HTML网页排版引擎之一,由KDE所开发)开发的开源项目,包含了来自KDE项目和苹果公司的一些组件,以及Webcore和JavaScriptCore(SquirrelFish,V8)两个引擎,主要用于MacOS系统。它主要的使用者有Safari、Chrome。

Webkit的特点在于源码结构清晰、渲染速度极快,虽然不及Presto但是也胜于Gecko和Trident。缺点是对于网页代码的容错性不高,也就是说对网页代码的兼容性较低,会使一些编写不标准的网页无法正确显示。

相关推荐