[ 基礎 瀏覽器內核 ] 瀏覽器渲染引擎機制

瀏覽器內核程序員

瀏覽器最重要或者說核心的部分是「Rendering Engine」,可大概譯爲「渲染引擎」,不過咱們通常習慣將之稱爲「瀏覽器內核」。負責對網頁語法的解釋(如標準通用標記語言下的一個應用HTMLJavaScript)並渲染(顯示)網頁。 因此,一般所謂的瀏覽器內核也就是瀏覽器所採用的渲染引擎,渲染引擎決定了瀏覽器如何顯示網頁的內容以及頁面的格式信息。不一樣的瀏覽器內核對網頁編寫語法的解釋也有不一樣,所以同一網頁在不一樣的內核的瀏覽器裏的渲染(顯示)效果也可能不一樣,這也是網頁編寫者須要在不一樣內核的瀏覽器中測試網頁顯示效果的緣由。編程

做    用瀏覽器

決定網頁及頁面格式信息 安全

內核分類 網絡

Trident 架構

Trident(IE內核):該內核程序在1997年的IE4中首次被採 用,是微軟在Mosaic代碼的基礎之上修改而來的,並沿用到IE11,也被廣泛稱做」IE內核」。Trident其實是一款開放的內核,其接口內核設 計的至關成熟,所以纔有許多采用IE內核而非IE的瀏覽器(殼瀏覽器)涌現。併發

因爲IE自己的「壟斷性」(雖然名義上IE並不是壟斷,但實際上,特別是從 Windows 95年代一直到XP初期,就市場佔有率來講IE的確藉助Windows的東風處於「壟斷」的地位)而使得Trident內核的長期一家獨大,微軟很長時間 都並無更新Trident內核,這致使了兩個後果——一是Trident內核曾經幾乎與W3C標準脫節(2005年),二是Trident內核的大量 Bug等安全性問題沒有獲得及時解決,而後加上一些致力於開源的開發者和一些學者們公開本身認爲IE瀏覽器不安全的觀點,也有不少用戶轉向了其餘瀏覽器,Firefox和Opera就是這個時候興起的。非Trident內核瀏覽器的市場佔有率大幅提升也導致許多網頁開發人員開始注意網頁標準和非IE瀏覽器的瀏覽效果問題。編程語言

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

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

其中部分瀏覽器的新版本是「雙核」甚至是「多核」,其中一個內核是Trident,而後再增長一個其餘內核。國內的廠商通常把其餘內核叫作「高速瀏覽模式」,而Trident則是「兼容瀏覽模式」,用戶能夠來回切換。

Gecko 

Gecko(Firefox內核):Netscape6開始採用的內核,後來的Mozilla FireFox(火狐瀏覽器) 也採用了該內核,Gecko的特色是代碼徹底公開,所以,其可開發程度很高,全世界的程序員均可覺得其編寫代碼,增長功能。由於這是個開源內核,所以受到許多人的青睞,Gecko內核的瀏覽器也不少,這也是Gecko內核雖然年輕但市場佔有率可以迅速提升的重要緣由。

事實上,Gecko引擎的由來跟IE不無關係,前面說過IE沒有使用W3C的標準,這致使了微軟內部一些開發人員的不滿;他們與當時已經中止更新了的 Netscape的一些員工一塊兒創辦了Mozilla,以當時的Mosaic內核爲基礎從新編寫內核,因而開發出了Gecko。不過事實上,Gecko 內核的瀏覽器仍然仍是Firefox (火狐) 用戶最多,因此有時也會被稱爲Firefox內核。此外Gecko也是一個跨平臺內核,能夠在Windows、 BSD、Linux和Mac OS X中使用。

補充:JavaScript引擎是SpiderMonkey。

Gecko內核常見的瀏覽器:[1]  Mozilla Firefox、Mozilla SeaMonkey、waterfox(Firefox的64位開源版)、Iceweasel、Epiphany(早期版本)、Flock(早期版本)、K-Meleon

Presto 

Presto(Opera前內核) (已廢棄): Opera12.17及更早版本曾經採用的內核,現已中止開發並廢棄,該內核在2003年的Opera7中首次被使用,該款引擎的特色就是渲染速度的優化達到了極致,然而代價是犧牲了網頁的兼容性。

實際上這是一個動態內核,與前面幾個內核的最大的區別就在腳本處理 上,Presto有着天生的優點,頁面的所有或者部分都可以在迴應腳本事件時等狀況下被從新解析。此外該內核在執行Javascrīpt的時候有着最快的 速度,根據在同等條件下的測試,Presto內核執行同等Javascrīpt所需的時間僅有Trident和Gecko內核的約1/3(Trident 內核最慢,不過二者相差沒有多大),本文的其中一個修改者認爲上述測試信息過於老舊且不完整,由於他曾作過的小測試顯示Presto部分快部分慢,各內核 整體至關。那次測試的時候由於Apple機的硬件條件和普通PC機不一樣因此沒有測試WebCore內核。只惋惜Presto是商業引擎,使用Presto 的除開Opera之外,只剩下NDSBrowser、Wii Internet Channle、Nokia 770網絡瀏覽器等,這很大程度上限制了Presto的發展。

Opera現已改用Google Chrome的Blink內核。

Webkit 

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

限於Mac OS X的使用不普遍和Safari瀏覽器曾經只是Mac OS X的專屬瀏覽器,這個內核自己應該說市場範圍並不大;但彷佛根據最新的瀏覽器調查代表,該瀏覽器的市場甚至已經超過了Opera的Presto了——固然 這一方面得益於蘋果轉到x86架構以後的人氣暴漲,另外也是由於Safari 3終於推出了Windows版的緣故吧。Mac下還有OmniWeb、Shiira等人氣很高的瀏覽器。

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

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

Blink 

產品簡介

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

相關新聞

2013年4月3日,谷歌在Chromium Blog上發表博客[3]  ,稱將與蘋果的開源瀏覽器核心Webkit分道揚鑣,在Chromium項目中研發Blink渲染引擎(即瀏覽器核心),內置於Chrome瀏覽器之中。

蘋果在Safari中採用Webkit核心,並於2005年將Webkit公開爲開源軟件。谷歌當時採用蘋果的Webkit核心打造了Chrome瀏覽器。Opera也宣佈稱將會轉向Webkit核心,可是谷歌宣佈此舉後,Opera表示將會跟隨谷歌採用其Blink瀏覽器核心,同時參與了Blink的開發。

谷歌轉 向研發Blink瀏覽器內核意義重大,谷歌此舉欲下降Webkit即蘋果在瀏覽器市場的影響力。截止2012年末,Webkit瀏覽器內核佔總瀏覽器市場 份額約40%。谷歌解釋稱,Chromium多處理架構系統與其餘Webkit瀏覽器很不相同。谷歌工程師Adam Barth在博客[3]  中表示,隨着瀏覽器的發展,蘋果的Webkit已經不能知足用戶需求,同時也有礙瀏覽器技術的創新步伐。可是他也表示,谷歌自主研發Blink內核絕非易 事,可是新內核將會提高整個開源網絡生態系統的機能。谷歌作出此舉之際,Mozilla與三星也達成合做協議開發「下一代」瀏覽器渲染引擎Servo。

排版引擎 

WebCore 

WebCore是蘋果公司開發的排版引擎,它是在另一個排版引擎「KHTML」的基礎上而來的。使用WebCore的主要有Safari,此外還有OmniWeb、Shiira、Swift等。Safari現支持Windows,但效果不如iOS上的。

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。

相關文章
相關標籤/搜索