常見瀏覽器內核概述

一、 瀏覽器內核【Rendering Engin】 (排版引擎/渲染引擎/解釋引擎)

  • 概述what?
    負責對網頁語法的解釋並渲染網頁,將網頁的代碼轉換爲最終可見的頁面形式,並且決定瀏覽器如何顯示網頁的內容以及頁面的格式信息。不同瀏覽器內核對網頁編寫語法的解釋也有不同,故同一網頁在不同內核瀏覽器中渲染效果也不盡相同,這就需要網頁編寫者在不同內核瀏覽器中測試網頁顯示的效果。

  • 爲什麼會排版錯位呢?
    由於瀏覽器內核負責渲染網頁內容的,進行排版,因此必然會出現排版錯位等問題。造成此現象的原因有:網站本身編寫不規範、瀏覽器本身的渲染不標準等等。

  • 內核分類
    1. Trident 內核(Windows)

    Trident(又稱爲MSHTML),於1997年,IE4中首次被採用,是微軟在Mosaic(NCSA Mosai的簡稱,是互聯網歷史上第一個獲普遍使用和能夠顯示圖片的網頁瀏覽器,由伊利諾伊大學厄巴納-香檳分校的NCSA組織於1993年發表,並於1997年1月7日正式終止開發和支持)代碼的基礎之上修改而來的,並沿用至IE11,通常被稱爲IE內核。

    由於IE本身的“壟斷性”而使得Trident內核的長期一家獨大,微軟很長時間都沒有更新Trident內核,這導致了兩個後果:
    1) Trident內核曾經幾乎與W3C標準脫節(2005年)
    2) Trident內核的大量 Bug等安全性問題沒有得到及時解決,然後加上一些致力於開源的開發者和一些學者們公開自己認爲IE瀏覽器不安全的觀點,也有很多用戶轉向了其他瀏覽器,Firefox和Opera就是這個時候興起的。非Trident內核瀏覽器的市場佔有率大幅提高也致使許多網頁開發人員開始注意網頁標準和非IE瀏覽器的瀏覽效果問題。

    Trident內核不同版本介紹

    Trident(又稱爲MSHTML),是微軟開發的一種排版引擎。它的第一個版本隨着1997年10月Internet Explorer第四版的發佈而發佈。隨後,Trident不斷地被更新和完善:
    Trident II(IE5)——增進對CSS1.0的支持及對CSS2重大的變更
    Trident III(IE5.5)——修正部分CSS的排版控制
    Trident IV(IE6)——修正了一部分box-model的錯誤以及增加了“兼容模式(Quirks Mode)”切換功能,以增加對文件類型描述(Document Type Definition,DTD)的支持
    Trident V(IE7)——修正許多CSS排版處理上的錯誤以及增加對PNG格式alpha通道(半透明)的支持

    IE從版本11開始,初步支持WebGL技術。IE8的JavaScript引擎是Jscript,IE9開始用Chakra,這兩個版本區別很大,Chakra無論是速度和標準化方面都很出色。

    Trident內核的常見瀏覽器有:
    [1]IE6、IE7、IE8(Trident 4.0)、IE9(Trident 5.0)、IE10(Trident 6.0);
    [2]360安全瀏覽器(1.0-5.0爲Trident,6.0爲Trident+Webkit,7.0爲Trident+Blink);
    360極速瀏覽器(7.5之前爲Trident+Webkit,7.5爲Trident+Blink);
    [3]獵豹極輕瀏覽器、獵豹安全瀏覽器(1.0-4.2版本爲Trident+Webkit,4.3及以後版本爲Trident+Blink)、獵豹極輕瀏覽器;
    [4]傲遊瀏覽器(傲遊1.x、2.x爲IE內核,3.x爲IE與Webkit雙核);
    [5]百度瀏覽器(早期版本);
    [6]世界之窗瀏覽器(最初爲IE內核,2013年採用Chrome+IE內核);
    [7]搜狗高速瀏覽器(1.x爲Trident,2.0及以後版本爲Trident+Webkit);
    [8]其它:
    2345瀏覽器、騰訊TT、淘寶瀏覽器、採編讀瀏覽器、阿雲瀏覽器(早期版本)、瑞星安全瀏覽器、Slim Browser、 GreenBrowser、愛帆瀏覽器(12 之前版本)、115瀏覽器、155瀏覽器、閃遊瀏覽器、N氧化碳瀏覽器、糖果瀏覽器、彩虹瀏覽器、瑞影瀏覽器、勇者無疆瀏覽器、114瀏覽器、螞蟻瀏覽器、飛騰瀏覽器、速達瀏覽器、佐羅瀏覽器、海豚瀏覽器(iPhone/iPad/Android)、UC瀏覽器(Blink內核+Trident內核)等。

    其中部分瀏覽器的新版本是“雙核”甚至是“多核”,其中一個內核是Trident,然後再增加一個其他內核。國內的廠商一般把其他內核叫做“高速瀏覽模式”,而Trident則是“兼容瀏覽模式”,用戶可以來回切換。

    2.Gecko(跨平臺)
    特點:代碼完全公開,以C++編寫的網頁排版引擎。

    因此,其可開發程度很高,全世界的程序員都可以爲其編寫代碼,增加功能。因爲這是個開源內核,因此受到許多人的青睞,Gecko內核的瀏覽器也很多,這也是Gecko內核雖然年輕但市場佔有率能夠迅速提高的重要原因。

    目前爲Mozilla家族網頁瀏覽器以及Netscape 6以後版本瀏覽器所使用。這軟件原本是由網景通訊公司開發的,現在主要由Mozilla基金會進行維護,是開源的瀏覽器內核,這套排版引擎提供了一個豐富的程序界面以供因特網相關的應用程序使用,例如網頁瀏覽器、HTML編輯器、客戶端/服務器等等。雖然最初的主要對象是Mozilla的衍生產品,如Netscape和Mozilla Firefox(火狐內核),現在已有很多其他軟件現在利用這個排版引擎。Gecko也是一個跨平臺內核,可以在Windows、BSD、Linux和Mac OS X中使用。

    常見的Gecko內核的瀏覽器:
    Mozilla Firefox、Mozilla SeaMonkey、Epiphany(早期版本)、Flock(早期版本)、K-Meleon.

    3.KHTML
    KHTML,是HTML網頁排版引擎之一,由KDE所開發。

    KDE系統自KDE2版起,在檔案及網頁瀏覽器使用了KHTML引擎。該引擎以C++編程語言所寫,並以LGPL授權,支援大多數網頁瀏覽標準。由於微軟的Internet Explorer的佔有率相當高,不少以FrontPage製作的網頁均包含只有IE才能讀取的非標準語法,爲了使KHTML引擎可呈現的網頁達到最多,部分IE專屬的語法也一併支援。

    KHTML擁有速度快捷的優點,但對錯誤語法的容忍度則比Mozilla產品所使用的Gecko引擎小。

    蘋果電腦於2002年採納了KHTML,作爲開發Safari瀏覽器之用,併發布所修改的最新及過去版本源代碼。後來發表了開放源代碼的WebCore及WebKit引擎,它們均是KHTML的衍生產品,在開發網站列出引擎改變內容,並會傳回至KDE計劃。由於兩個衍生產品各走不同路線,使兩者源代碼偏離,在與KDE交換更新會出現困難。其中一個原因,是蘋果在對外公開源代碼之前,以一年時間編修他們的KHTML。另外,蘋果傳送更新至KDE計劃的方式,多是一口氣把大量改動一起傳送,KDE在整理資料也出現一定的困難,及後蘋果表示會以CVS格式來傳送。再者,蘋果所作出的改動包括Mac OS X系統獨有的事物,如Objective-C、KWQ等,在Linux及KHTML是沒有的。但KDE方面仍透過這些改動,爲KHTML加入新功能及加快其排版速度。

    基於KHTML內核的內核:
    WebKit、WebCore。

    使用KHTML的產品

    • KDE Konqueror - KDE的網頁瀏覽器及檔案管理員
    • Safari - 蘋果電腦的網頁瀏覽器
    • Embedded Konqueror - PDA上的網頁瀏覽器
    • SkyKruzer - SkyOS上的網頁瀏覽器
    • ABrowse - Syllable操作系統上的網頁瀏覽器
    • Nokia Series 60 移動電話的瀏覽器

    4.WebKit(跨平臺)
    Webkit(Safari內核,Chrome內核原型,開源),是蘋果公司自己的內核,也是蘋果的Safari瀏覽器使用的內核。 Webkit引擎包含WebCore排版引擎及JavaScriptCore解析引擎,均是從KDE的KHTML及KJS引擎衍生而來,均是自由軟件,在GPL條約下授權,同時支持BSD系統的開發。因此,Webkit也是自由軟件,同時開放源代碼。在安全方面不受IE、Firefox的制約,所以Safari瀏覽器在國內還是很安全的。

    Google Chrome、360極速瀏覽器以及搜狗高速瀏覽器高速模式也使用Webkit作爲內核(在腳本理解方面,Chrome使用自己研發的V8引擎)。WebKit 內核在手機上的應用也十分廣泛,如 Google 的手機 Gphone、 Apple 的iPhone, Nokia’s Series 60 browser 等所使用的Browser內核引擎,都是基於WebKit。

    目前,webkit內核是公認的最快的網頁瀏覽方式。

    WebKit內核常見的瀏覽器:
    傲遊瀏覽器3、Apple Safari (Win/Mac/iPhone/iPad)、Symbian手機瀏覽器、Android 默認瀏覽器。

    5.Chromium(跨平臺)
    Chromium 是 Google 的chrome瀏覽器背後的引擎,其目的是爲了創建一個安全、穩定和快速的通用瀏覽器。以BSD許可證等多重自由版權發行並開放源代碼。

    早自2006年開始開發,設計思想基於簡單、高速、穩定、安全等理念,在架構上使用了Apple發展出來的WebKit排版引擎、Safari的部份源代碼與Firefox的成果,並採用Google獨家開發出的V8引擎以提升解譯JavaScript的效率,而且設計了“沙盒”、“黑名單”、“無痕瀏覽”等功能來實現穩定與安全的網頁瀏覽環境。Chromium是Google爲發展自家的瀏覽器Google Chrome(以下簡稱Chrome)而開啓的計劃,所以Chromium相當於Chrome的工程版或稱實驗版(儘管Chrome自身也有β版階段),新功能會率先在Chromium上實現,待驗證後纔會應用在Chrome上,故Chrome的功能會相對落後但較穩定。Chromium的更新速度很快,每隔數小時即有新的開發版本發佈,而且可以免安裝,下載zip封裝版後解壓縮即可使用(Windows下也有安裝版)。Chrome雖然理論上也可以免安裝,但Google僅提供安裝版。

    常見的Chromium內核的瀏覽器:
    Google Chrome、Chromium、SRWare Iron、Comodo Dragon
    使用Chromium開源代碼(基於webkit內核)的瀏覽器:
    360極速瀏覽器、楓樹瀏覽器、太陽花瀏覽器、世界之窗極速版、傲遊瀏覽器和UC瀏覽器電腦版等。
    搜狗高速瀏覽器和qq瀏覽器官網未提及Chromium,只是說採用webkit內核,經網友測試這兩款瀏覽器極有可能也是使用的Chromium,只是官方不承認而已。

    6.Presto(跨平臺)
    2003年,Presto是商業引擎,在Opera7中首次被使用,特點是渲染速度的優化達到了極致,然而代價是犧牲了網頁的兼容性。此內核曾經被Opera12.17及更早版本所採用,現已停止開發並廢棄。

    Presto是一個動態內核,頁面的全部或者部分都能夠在迴應腳本事件時等情況下被重新解析,且在執行Javascript時具有最快速度。根據在同等條件下的測試,Presto內核執行同等Javascript所需的時間僅約Trident和Gecko內核的1/3(Trident內核最慢,不過兩者相差沒有多大)。曾有小測試顯示Presto部分快部分慢,各內核總體相當。只是測試中Apple機的硬件條件和普通PC機不同所以沒有測試WebCore內核。

    使用Presto的瀏覽器有:
    除開Opera以外,只剩下NDSBrowser、Wii Internet Channle、Nokia 770網絡瀏覽器等,發展前景受限制。
    目前,Opera現已改用Google Chrome的Blink內核。

    7.Blink
    Blink是一個由Google和OperaSoftware開發的瀏覽器排版引擎,Google計劃將這個渲染引擎作爲Chromium計劃的一部分,並且在2013年4月的時候公佈了這一消息。這一渲染引擎是開源引擎WebKit中WebCore組件的一個分支,並且在Chrome(28及往後版本)、Opera(15及往後版本)和Yandex瀏覽器中使用。

    8.WebCore
    WebCore是蘋果公司開發的排版引擎,是另一排版引擎“KHTML”基礎上而來的。

    使用WebCore的主要有:
    Safari、OmniWeb、Shiira、Swift等。

二、JavaScript引擎

  • 概述
    JavaScript引擎是一個專門處理JavaScript腳本的虛擬機,一般會附帶在網頁瀏覽器之中。例如:一個算圓周率的網頁,排版引擎顯示頁面的框架,但最終結果需要用到 Javascript 來計算,所以Javascript引擎的快慢也影響着整個網頁的速度,特別是目前越來越多類似 WebQQ、Gmail 等大量應用了複雜的 Javascript 運算的網站,不同的引擎最終的速度差異會相當大。

    很多時候,大家在評論哪個瀏覽器更快,其實基本上指的是JavaScript的渲染速度,而不是頁面的載入速度。在網速一定的情況下,各瀏覽器的頁面載入速度差別不大。但是,越來越多的動態頁面開始大量藉助JavaScript,比如SNS、郵箱、網頁遊戲等,所以JavaScript在頁面中的比重會越來越大,從而使得JavaScript的渲染速度也成爲一個很重要的指標。JavaScript的渲染速度越快,動態頁面的展示也越快。
    Opera在JavaScript引擎的跑分上面一直都是很牛逼的,一般來說最新測試版之間PK,Opera基本都會奪冠。

    1.Chakra
    Chakra由微軟爲其Internet Explorer 9 (IE9) 網頁瀏覽器開發的JScript引擎。該引擎的32位元版本(Internet Explorer 10才同時支援64位元)的一個特色是,它在一個獨立的CPU核心上即時編譯腳本,與瀏覽器並行。該引擎也能夠訪問電腦的圖形處理器(GPU),特別是對 3D 圖形和視頻的情況。

    引擎的提高則是爲了迴應不斷髮展的與之競爭的瀏覽器,IE 8 在Javascript 方面仍然落後於其它瀏覽器。於 2009 . 11 . 18舉行的 SunSpider 測試展示了 IE9 的 PDC 版本對腳本的執行遠快於 IE8,但是仍然慢於Firefox 3.6, Chrome 4 和 WebKit Nightly。

    2.SpiderMonkey / TraceMonkey / JaegerMonkey

    SpiderMonkey(跨平臺)
    Mozilla項目的一部分,是一個用C語言實現的JavaScript腳本引擎,另外還有一個叫做Rhino的Java版本。爲了在SpiderMonkey中運行JavaScript代碼,應用程序必須有三個要素:JSRuntime,JSContext和全局對象。
    SpiderMonkey應用在Mozilla Firefox 1.0-3.0。

    TraceMonkey
    Firefox啓用於2008年,目標爲改善Mozilla JavaScript引擎,並提高瀏覽器產生頁面與迴應時間的速度,即爲了讓Firefox能夠與桌面端程式及各種新興應用技術如Microsoft Silverlight與Adobe Flash相競爭。
    TraceMonkey應用在Mozilla Firefox 3.5-3.6版本。

    JaegerMonkey
    隨着競爭廠商陸續改善瀏覽器性能,競爭激烈,固Firefox逐漸落後。爲此,Mozilla基金會爲Firefox開發全新的JaegerMonkey引擎。
    JaegerMonkey應用在Mozilla Firefox 4.0及後續的版本。

    3.V8(JavaScript引擎)
    V8可以獨立運行,也可以嵌入到任何C++應用程序。項目託管在Google Code上,基於BSD協議,目前該JavaScript引擎已用於其它項目的開發,任何組織或個人可以將其源碼用於自己的項目中。

    第一個版本隨着第一個版本的Chrome與2008年9月2日發佈。該引擎使用C++開發,並在谷歌瀏覽器中使用。在運行JavaScript之前,相比其它的JavaScript引擎轉換成字節碼或解釋執行,V8將其編譯成原生機器碼(IA-32, x86-64, ARM, or MIPS CPUs),並且使用瞭如內聯緩存(inline caching)等方法來提高性能。因此,JavaScript程序在V8引擎下的運行速度媲美二進制程序。

    應用:
    Chrome、傲遊3。

    4.Nitro
    應用於Safari 4及後續的版本。

    5.Linear A/Linear B/Futhark/Carakan
    Linear A應用於Opera 4.0-6.1版本;
    Linear B應用於Opera 7.0~9.2版本;
    Futhark應用於Opera 9.5-10.2版本;
    Carakan應用於Opera 10.5及後續的版本。

    7.KJS
    KHTML對應的JavaScript引擎。

三、有關的測試項目

  • V8引擎
    測試傳送門,現在很多“雙核”瀏覽器都用它來跑分測試JavaScript引擎,分數越高越好。

  • Acid3
    測試傳送門,主要是對網頁標準的兼容性測試,目的是考覈瀏覽器對於Web技術的支持,分數越高表示越符合網頁的開發標準,滿分是100分。

    2008年3月3日正式發佈。其測試焦點集中在ECMAScript(ECMA-262標準化的腳本程序設計語言)、DOM Level 3( DOMImplementation,允許實現者挑選產品檢測特性)、Media Queries(媒體查詢)和data: URL。

  • HTML5
    測試傳送門,測試瀏覽器對HTML5標準的支持,分數越高越好。

四、拓展

  • IETab
    這是一款瀏覽器擴展,並非內核。在沒有第三方編譯版本的時候,IETab一直是 Mozilla Firefox、Chrome等非Trident內核的瀏覽器的安裝量最大的擴展之一,方便用戶在不開啓IE的情況下調用Trident內核訪問一些兼容性比較差的網站。它解決很多使用不規範語言、包含ActiveX或者要求IEonly的網頁的瀏覽問題。但是絕大多數MozillaFirefox/GoogleChrome的擴展在使用IE tab瀏覽的標籤頁內無法使用。

  • Trident/Gecko雙核瀏覽器

    雖然IETab能實現部分需求,但是深度訂製的畢竟還是不一樣,所以Trident/Gecko雙核瀏覽器就誕生了,Sleipnir、Avant 12(Orca)是這類裏面比較常見的。Avant 12因爲有Orca的前期積累,所以輕車熟路,後面還打算加入Chromium,變成三核瀏覽器,但是偏偏現在Mozilla Firefox和Chrome都在瘋狂刷版本號,肯定有一部分精力要花在跟進版本上。

  • Trident/WebKit雙核瀏覽器
    現在國內最主流的“雙核”瀏覽器基本都是這個架構,360極速瀏覽器、世界之窗瀏覽器極速版、傲遊3、搜狗瀏覽器3、QQ瀏覽器、楓樹瀏覽器、快快瀏覽器、百度瀏覽器、阿雲瀏覽器(後期版本)、太陽花瀏覽器,其中最奇葩的是傲遊3。其它雙核瀏覽器都是基於Chromium的,而傲遊是基於WebKit的,但是偏偏又用的是V8引擎。

  • Trident/Gecko/WebKit三核瀏覽器
    目前能見的應該就是日本的Lunascape,Avant增加了WebKit內核之後也會歸類到這裏。說實話,Lunascape比較難使用。各個內核相對獨立,外殼本身不夠強化,穩定性不高。

五、其它(參照其它資料)

  • Chrome/Chromium
    很多人都會說自己用的雙核瀏覽器是Chrome/IE雙核的,或者說是基於Chrome的。其實這種說法並不正確,因爲Chrome本身並不開源,其它廠商是不能去定製Chrome的。能被修改、定製的是Chromium,Chrome的開源開發版本,代碼和Build都提供下載。Chromium/Chrome兩個單詞都是鉻,分別是拉丁文和英文,除了名字之外,存在很多不同。Chromium一天最多可以更新十幾乃至二十個版本,實驗性的新特性都會現在這裏放出,但是Chromium本身其實並不穩定。Chrome總共有四個更新分支:Canary、Dev、Beta、Stable,穩定性依次增強。

  • 一直被模仿,一直被超越的Opera
    Opera其實很好看也很好用,而且極度創新(貌似全頁面縮放、多標籤瀏覽、鼠標手勢、快速撥號等功能都是它首創的),但是市場佔有率一直很低。很多很好用的新特性總是被抄襲,所以大家笑稱Opera“一直被模仿,一直被超越”。坊間傳聞多標籤頁瀏覽器就是Opera發明的,但是貌似有人考究了這個傳聞其實不屬實。不過快速撥號、Turbo瀏覽等功能就是紮紮實實Opera首創的。

發佈了51 篇原創文章 · 獲贊 70 · 訪問量 21萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章