1. WebKit架構(gòu)
WebKit架構(gòu)
2. Chromium瀏覽器的架構(gòu)和模塊
Chromium瀏覽器是基于WebKit(blink)的。
1. 架構(gòu)和模塊
Chromium的架構(gòu)模塊
Content模塊是指用來(lái)渲染網(wǎng)頁(yè)內(nèi)容的模塊萨咳,通過(guò)Content模塊,瀏覽器的開(kāi)發(fā)者不僅可以在WebKit的Chorme的移植上渲染網(wǎng)頁(yè)內(nèi)容瓢喉,而且可以獲得沙箱模型摹蘑、跨進(jìn)程的GPU硬件加速機(jī)制渺鹦、眾多的H5功能扰法。
2. 多進(jìn)程模型
相信你一定有過(guò)這樣的經(jīng)歷:在使用瀏覽器打開(kāi)多個(gè)頁(yè)面的時(shí)候,不幸的是其中某個(gè)頁(yè)面不響應(yīng)了或者崩潰了海铆,隨之而來(lái)的可能是更不幸的事——其他所有頁(yè)面也不響應(yīng)或崩潰了迹恐。
多進(jìn)程的引入有以下幾點(diǎn)好處:
- 不會(huì)因?yàn)閱蝹€(gè)頁(yè)面的不響應(yīng)或崩潰而影響整個(gè)瀏覽器的穩(wěn)定性,特別是對(duì)用戶(hù)界面的影響卧斟;
- 當(dāng)?shù)谌讲寮罎⒌臅r(shí)候殴边,不會(huì)影響頁(yè)面或?yàn)g覽器的穩(wěn)定性,這是因?yàn)榈谌讲寮脖皇褂脝为?dú)的進(jìn)程來(lái)運(yùn)行珍语;
- 它方便了安全模型的實(shí)施锤岸,也就是說(shuō)沙箱模型也是基于多進(jìn)程架構(gòu)的。
Chromium多進(jìn)程模型
Chromium瀏覽器主要包括以下進(jìn)程類(lèi)型:
- Browser進(jìn)程:瀏覽器的主進(jìn)程板乙,負(fù)責(zé)瀏覽器主界面的顯示是偷、各個(gè)頁(yè)面的管理拳氢,是其他所有進(jìn)程的祖先,負(fù)責(zé)它們的創(chuàng)建和銷(xiāo)毀工作蛋铆,它有且僅有一個(gè)馋评。
- Render進(jìn)程:網(wǎng)頁(yè)的渲染進(jìn)程,負(fù)責(zé)頁(yè)面的渲染工作刺啦,blink/WebKit的渲染工作主要在這個(gè)進(jìn)程完成留特。
- NPAPI插件進(jìn)程:該進(jìn)程是為NPAPI類(lèi)型的插件而創(chuàng)建的。
- GPU進(jìn)程:最多只有一個(gè)玛瘸,當(dāng)且僅當(dāng)GPU硬件加速打開(kāi)的時(shí)候才會(huì)被創(chuàng)建蜕青,主要用于對(duì)3D圖形加速調(diào)用的實(shí)現(xiàn)。
- Pepper插件進(jìn)程:類(lèi)似于NPAPI進(jìn)程糊渊。
總結(jié):
- Browser進(jìn)程和頁(yè)面的渲染是分開(kāi)的右核,這保證了頁(yè)面渲染導(dǎo)致的崩潰不會(huì)導(dǎo)致瀏覽器主界面的崩潰。
- 每個(gè)頁(yè)面是獨(dú)立的進(jìn)程渺绒,這保障了頁(yè)面之間相互不影響贺喝。
- 插件進(jìn)程也是獨(dú)立的,插件本身的問(wèn)題不會(huì)影響瀏覽器主界面和網(wǎng)頁(yè)芒篷。
- GPU硬件加速進(jìn)程也是獨(dú)立的搜变。