1. WebKit架構(gòu)
WebKit架構(gòu)
2. Chromium瀏覽器的架構(gòu)和模塊
Chromium瀏覽器是基于WebKit(blink)的。
1. 架構(gòu)和模塊
Chromium的架構(gòu)模塊
Content模塊是指用來渲染網(wǎng)頁內(nèi)容的模塊,通過Content模塊,瀏覽器的開發(fā)者不僅可以在WebKit的Chorme的移植上渲染網(wǎng)頁內(nèi)容,而且可以獲得沙箱模型、跨進程的GPU硬件加速機制、眾多的H5功能。
2. 多進程模型
相信你一定有過這樣的經(jīng)歷:在使用瀏覽器打開多個頁面的時候,不幸的是其中某個頁面不響應(yīng)了或者崩潰了,隨之而來的可能是更不幸的事——其他所有頁面也不響應(yīng)或崩潰了。
多進程的引入有以下幾點好處:
- 不會因為單個頁面的不響應(yīng)或崩潰而影響整個瀏覽器的穩(wěn)定性,特別是對用戶界面的影響;
- 當?shù)谌讲寮罎⒌臅r候,不會影響頁面或瀏覽器的穩(wěn)定性,這是因為第三方插件也被使用單獨的進程來運行;
- 它方便了安全模型的實施,也就是說沙箱模型也是基于多進程架構(gòu)的。
Chromium多進程模型
Chromium瀏覽器主要包括以下進程類型:
- Browser進程:瀏覽器的主進程,負責(zé)瀏覽器主界面的顯示、各個頁面的管理,是其他所有進程的祖先,負責(zé)它們的創(chuàng)建和銷毀工作,它有且僅有一個。
- Render進程:網(wǎng)頁的渲染進程,負責(zé)頁面的渲染工作,blink/WebKit的渲染工作主要在這個進程完成。
- NPAPI插件進程:該進程是為NPAPI類型的插件而創(chuàng)建的。
- GPU進程:最多只有一個,當且僅當GPU硬件加速打開的時候才會被創(chuàng)建,主要用于對3D圖形加速調(diào)用的實現(xiàn)。
- Pepper插件進程:類似于NPAPI進程。
總結(jié):
- Browser進程和頁面的渲染是分開的,這保證了頁面渲染導(dǎo)致的崩潰不會導(dǎo)致瀏覽器主界面的崩潰。
- 每個頁面是獨立的進程,這保障了頁面之間相互不影響。
- 插件進程也是獨立的,插件本身的問題不會影響瀏覽器主界面和網(wǎng)頁。
- GPU硬件加速進程也是獨立的。