技術(shù)分析 - 再談Internet Explorer 8進(jìn)程模型
今天在網(wǎng)上看到了微軟公布了一個(gè)IE8和其他2款瀏覽器:Firefox和Google Chrome的速度對(duì)比的白皮書和視頻,感嘆于IE8的高效和穩(wěn)定。
首先我們看一下IE 7的進(jìn)程模型
(圖片引自于IE8 Team Blog)
在Vista的IE7當(dāng)中(注:不能是XP),由2個(gè)進(jìn)程掌管,一個(gè)是ieuser.exe,另外一個(gè)是iexplore.exe,其中ieuser.exe運(yùn)行在medium的完整性級(jí)別,起著決定iexplorer.exe這個(gè)進(jìn)程的完整性級(jí)別。
這里可以做個(gè)實(shí)驗(yàn):在IE7里面打開2個(gè)空的Tab,然后分別在2個(gè)Tab上打開www.baidu.com和www.taobao.com,由于淘寶網(wǎng)需要運(yùn)行在保護(hù)模式關(guān)閉的IE7進(jìn)程下,因此此時(shí)會(huì)彈出一個(gè)新的IE頁(yè)面來(lái)顯示淘寶網(wǎng)的內(nèi)容。
注意此時(shí)有2個(gè)IE的頁(yè)面,從上面的圖中就可以知道為什么了。因?yàn)樵贗E7當(dāng)中,一個(gè)IE頁(yè)面對(duì)應(yīng)著一個(gè)iexplorer.exe的進(jìn)程,而一個(gè) iexplorer.exe進(jìn)程中的所有Tab都必須是相同的完整性級(jí)別。如果不同完整性級(jí)別的Tab出現(xiàn),那么需要新開IE頁(yè)面。
這個(gè)時(shí)候,用Process Explorer來(lái)分析一下2個(gè)進(jìn)程:
再來(lái)看一下IE8的進(jìn)程模型:
(圖片引自于IE8 Team Blog)
在IE8里面的進(jìn)程模型有了很大的變化,Smallfrogs的文章里面也介紹了很多,關(guān)鍵就在于IE8里面每個(gè)Tab都有一個(gè)iexplorer.exe的進(jìn)程。
同樣剛剛的實(shí)驗(yàn)放在IE8里面,就會(huì)發(fā)現(xiàn),在一個(gè)IE8的頁(yè)面里面可以同時(shí)運(yùn)行百度和淘寶的Tab。
這是因?yàn)樵贗E8里面,取消了ieuser.exe這個(gè)進(jìn)程,我猜測(cè)這也是IE8的運(yùn)行速度加快很多的主要原因。其次就是一個(gè)Tab一個(gè)進(jìn)程,使得在IE8下面的所有Tab都可以被裝入一個(gè)IE頁(yè)面,而不要再像IE7那樣,同樣完整性級(jí)別的Tab共享一個(gè) iexplorer.exe進(jìn)程。這樣,我們平時(shí)瀏覽不同完整性級(jí)別的網(wǎng)頁(yè)的時(shí)候,就不需要切換IE的窗口,而只需要切換Tab就可以了。
這個(gè)時(shí)候,同樣用Process Explorer來(lái)分析一下2個(gè)進(jìn)程:
說(shuō)了這么多,當(dāng)然要說(shuō)一下之所以IE8的進(jìn)程模型要如此Design的原因,原因在smallfrogs的文章當(dāng)中早有提出,這里引用一下:
“這種設(shè)計(jì)的好處就是一個(gè)Tab崩潰以后,只會(huì)影響這個(gè)Tab,對(duì)于其他的Tab是不影響的。同時(shí),最外面的框架進(jìn)程能夠知道子Tab的情況,也就能夠很好的實(shí)現(xiàn)“災(zāi)難恢復(fù)”了。”
【編輯推薦】