浏览器架构
浏览器架构演进
- 单进程架构:所有模块运行在同一个进程里包含网络,插件,JavaScript运行环境等
- 多架构进程:主进程,网络进程,渲染进程,GPU进程,插件进程
- 面向服务架构:将原来的UI,数据库,文件,设备,网络等作为一个独立的基础服务
架构对比
从扩展性,安全性,稳定性,流畅度四个方面进行对比:
- 扩展性:
- 单进程架构:扩展性低,所有模块运行在同一进程内访问同一内存地址,新增模块可能影响原有功能
- 多进程架构:扩展性中等,虽然各进程分配独立的内存区域但是有些进程功能大,耦合度高
- 面向服务框架:扩展性高,服务模块划分细致,耦合性低易于扩展
- 安全性
- 单进程架:安全性低,三方插件可以直接访问操作系统里任意资源
- 多进程架构:安全性高,运行在独立沙盒中,不能访问敏感资源
- 面向服务框架:安全性高,运行在独立沙盒中,不能访问敏感资源
- 确定性
- 单进程架:稳定性低,三方插件或者某个JavaScript脚本问题可能导致浏览器崩溃
- 多进程架构:进程相互隔离,个体崩溃时不会影响到其他进程
- 面向服务框架:进程相互隔离,个体崩溃时不会影响到其他进程
4.流畅度
- 单进程架:使用卡顿,所有页面运行在同一进程中,开启多个页面明显卡顿
- 多进程架构:使用流畅,每个页面运行在独立的渲染进程中,充分利用系统资源
- 面向服务框架:使用流畅,每个页面运行在独立的渲染进程中,充分利用系统资源
渲染进程
常见浏览器内核
IE4-11浏览器:Trident内核,IE8以前使用JScript,之后使用Chakra作为JS引擎 Firefox浏览器:Gecko内核,SpiderMonkey JS引擎 Chrome浏览器:Blink内核,V8 JS引擎 Edge浏览器:Edge内核,Chakra JS引擎