浏览器架构
浏览器架构演进
- 单进程架构:所有的模块运行在一个进程之中,包括网络-插件-Javascrip运行环境等。
- 多进程架构:主进程-网络进程-渲染进程-GPU进程-插件进程等。
- 面向服务架构:将原来的UI-数据库-文件-设备等作为独立的基础服务。
进程分工
- 主进程:负责页面逻辑,用户交互,子进程管理;包括地址栏,书签,前进,后退,收藏夹等
- GPU进程:负责UI绘制,包括整个浏览器全部UI
- 网络进程:负责网络资源加载
- 标签页(渲染进程):控制tab内内容,将html,css,js转换为用户可交互网页
- 插件进程:控制插件
- 其他进程:程序Storage/Network/Audio Service等
渲染进程
渲染进程——多线程架构
内部是多线程实现,主要负责页面渲染,脚本执行,事件处理,网络请求等。
JS引擎 VS 渲染引擎
JS引擎负责解析执行js,渲染引擎负责解析生成渲染树(HTML->DOM tree; CSS -> CSSOM tree) -> render tree,两者之间通过桥接方式通信
渲染进程-多进程工作流程
-
网络线程负责加载网页资源
-
JS引擎解析js脚本并且执行
-
JS解析引擎空闲时,渲染线程立即工作
-
用户交互,定时器操作等产生回调函数放入任务队列之中
-
事件进程进行事件循环,将队列里的任务取出交给JS引擎执行