浏览器是多进程的架构,首先你要注意到我们说的是进程,而不是线程,这一点应该牢记进程和线程之间的关系和区别。
有一个很常见的冠以浏览器的面试题目,【浏览器的主要组成部分由哪些?】
我个人认为从浏览器的多进程模型来回答就可以,把每个进程负责的功能进行扩展描述。
浏览器的主要进程有
- 浏览器进程 【也就是主进程,负责浏览器界面功能】
- 网络进程【负责网络请求】
- 渲染进程【对每个标签页渲染 dom 解析等功能,也是我们常说的浏览器的内核】【多个】
- 插件进程【浏览器插件】【多个】
- GPU 进程【图形处理单元(graphics processing unit)独立的进程,负责页面合成和动画
- 扩展进程
- 沙盒进程
反正主要的就是1-5个,一定要详细背诵。
其实很好记忆的,你就跟着【浏览器输入url 到页面有返回】的整个过程来记忆就行了,浏览器主要不就是用来浏览网页的么?
(1)查询资料,输入URL【浏览器进程】 =>
(2)发起网络请求【网络进程】=>
(3)页面返回【渲染进程】=>
(4)页面有广告,我用浏览器拦截广告插件拦截一下【插件进程】=>
(5)页面很好看,有花里胡哨的动画【GPU进程】
还有个问题,有些资料写 渲染引擎,有些些渲染进程,你可能会迷惑,他俩是一个东西吗?
我的理解是这样的,进程是用来执行引擎的。
比如说,渲染进程用来执行渲染引擎
所以这道题目【浏览器的主要组成部分由哪些?】咋回答好呢?
下面是我总结的答案,仅供参考。
(1)浏览器是多进程架构,他的主要进程由 浏览器主进程、网络进程、渲染进程、插件进程、GPU进程等;
(2)其中浏览器主进程,负责浏览器页面功能的管理,包括地址栏、刷新前进后退按钮、书签管理以及菜单等用户界面的功能。
(3)网络进程负责处理浏览器的缓存,以及各种网络请求
(4)还有渲染进程负责将网络请求返回的资源渲染到页面上,渲染进程负责dom解析页面渲染等功能
(5)此外还有 GPU 进程负责页面动画的处理,插件进程负责浏览器插件的相关功能。