1、 瀏覽器內核【Rendering Engin】 (排版引擎/渲染引擎/解釋引擎)web
概述what?
負責對網頁語法的解釋並渲染網頁,將網頁的代碼轉換爲終於可見的頁面形式,並且決定瀏覽器怎樣顯示網頁的內容以及頁面的格式信息。chrome
不一樣瀏覽器內核對網頁編寫語法的解釋也有不一樣,故同一網頁在不一樣內核瀏覽器中渲染效果也不盡一樣,這就需要網頁編寫者在不一樣內核瀏覽器中測試網頁顯示的效果。編程
爲何會排版錯位呢?
由於瀏覽器內核負責渲染網頁內容的,進行排版。所以一定會出現排版錯位等問題。瀏覽器
形成此現象的緣由有:站點自己編寫不規範、瀏覽器自己的渲染不標準等等。緩存
內核分類
1. Trident 內核(Windows)安全
Trident(又稱爲MSHTML),於1997年,IE4中首次被採用,是微軟在Mosaic(NCSA Mosai的簡稱,是互聯網歷史上第一個獲廣泛使用和可以顯示圖片的網頁瀏覽器,由伊利諾伊大學厄巴納-香檳分校的NCSA組織於1993年發表。並於1997年1月7日正式終止開發和支持)代碼的基礎之上修改而來的,並沿用至IE11。一般被稱爲IE內核。markdown
由於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]IE六、IE七、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編輯器、client/server等等。
儘管最初的主要對象是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的產品
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內核常見的瀏覽器:
傲遊瀏覽器三、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的project版或稱實驗版(儘管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等。
2、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引擎。
3、有關的測試項目
V8引擎
測試傳送門,現在很是多「雙核」瀏覽器都用它來跑分測試JavaScript引擎,分數越高越好。
Acid3
測試傳送門,主要是對網頁標準的兼容性測試,目的是考覈瀏覽器對於Web技術的支持。分數越高表示越符合網頁的開發標準,滿分是100分。
2008年3月3日正式公佈。其測試焦點集中在ECMAScript(ECMA-262標準化的腳本程序設計語言)、DOM Level 3( DOMImplementation,贊成實現者挑選產品檢測特性)、Media Queries(媒體查詢)和data: URL。
HTML5
測試傳送門。測試瀏覽器對HTML5標準的支持,分數越高越好。
4、拓展
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極速瀏覽器、世界之窗瀏覽器極速版、傲遊三、搜狗瀏覽器三、QQ瀏覽器、楓樹瀏覽器、快快瀏覽器、百度瀏覽器、阿雲瀏覽器(後期版本號)、太陽花瀏覽器。當中最奇葩的是傲遊3。其餘雙核瀏覽器都是基於Chromium的,而傲遊是基於WebKit的,但是恰恰又用的是V8引擎。
Trident/Gecko/WebKit三核瀏覽器
眼下能見的應該就是日本的Lunascape,Avant添加了WebKit內核以後也會歸類到這裏。說實話。Lunascape比較難使用。
各個內核相對獨立。外殼自己不夠強化,穩定性不高。
5、其餘(參照其餘資料)
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獨創的。