1-浏览器架构-实践篇
那么我们来来看看Chrome是对应的浏览器架构是怎样的呢?当我们打开任务管理器的时候,会看到看到浏览器开启会有多个进程(可以通过Chrome的更多工具 -> 任务管理器
自行查看。)。

那我们来来看看chrome有哪些主要进程吧。
- Browser Process:浏览器的主进程(负责协调、主控),只有一个。
- 负责包括地址栏,书签栏,前进后退按钮等部分的工作;
- 负责各个页面的管理,创建和销毁其他进程;
- 将Renderer进程得到的内存中的Bitmap,绘制到用户界面上;
- 负责处理浏览器的一些不可见的底层操作,比如网络请求和文件访问;
- Renderer Process:默认每个Tab页面一个进程,互不影响。
- 页面渲染,脚本执行,事件处理等
- Plugin Process:每种类型的插件对应一个进程,仅当使用该插件时才创建
- GPU Process:最多一个,用于3D绘制等

那多进程架构由那些优/劣势呢?
优势 | 劣势 |
---|---|
单一页面的 crash 并不会影响浏览器 | 不同进程内存不能共享,导致不同进程内存中存有相同信息 |
插件的 crash 并不会影响浏览器 | |
多进程充分利用多核优势 | |
更为安全,在系统层面上限定了不同进程的权限 |
chrome 为了节省内存的使用,限制了最多的进程数,最大进程数量由设备的内存和 CPU 能力决定,当达到这一限制时,新打开的 Tab 会共用之前同一个站点的渲染进程。
Chrome 把浏览器不同程序的功能看做服务,这些服务可以方便的分割为不同的进程或者合并为一个进程。以 Broswer Process 为例,如果 Chrome 运行在强大的硬件上,它会分割不同的服务到不同的进程,这样 Chrome 整体的运行会更加稳定,但是如果 Chrome 运行在资源贫瘠的设备上,这些服务又会合并到同一个进程中运行,这样可以节省内存。
以上介绍完了浏览器的基本架构,但是我们最开始的问题还没开始解决呢!回顾一下问题:
「在浏览器地址栏中输入 url 到页面展现的短短几秒内浏览器究竟做了什么?」