浏览器架构
浏览器架构演进
-
单进程架构:所有模块运行在同一个进程里,包含网络、插件、JavaScript运行环境等
- 在早期的浏览器中,所有的功能都在一个进程中完成,包括用户界面、JavaScript执行、CSS渲染和网络请求等。单进程架构的优势是简单、易于实现,但缺点也很明显,如:不稳定(一个标签页崩溃可能导致整个浏览器崩溃)、不安全(攻击者可以利用漏洞来控制整个浏览器)以及性能瓶颈(多个标签页争抢资源,导致性能下降)。
-
多进程架构:主进程、网络进程、渲染进程、GPU进程、插件进程
- 为了解决单进程架构的问题,浏览器厂商开始将浏览器的功能拆分为多个进程。例如,谷歌推出的Chrome浏览器就采用了多进程架构。在这种架构下,浏览器将每个标签页(或每个渲染实例)分配给一个单独的进程,从而实现了进程间的隔离,防止单个网页崩溃影响到其他界面。多进程架构提高了浏览器的稳定性、安全性和性能,但同时也增加了内存消耗
- 每一个Tab运行在独立的沙盒里面
-
面向服务架构:将原来的UI、数据库、文件、设备、网络等,作为一个独立的基础服务
-
面向服务架构 => 多进程架构升级版本
-
随着Web平台的发展,浏览器需要处理越来越多的任务,这使得多进程架构变得复杂且难以维护。面向服务架构的出现旨在将浏览器的各个功能模块化,将它们作为独立的服务来运行和维护。在这种架构下,每个服务都可以独立地使用一个或多个进程,根据需求自动扩展或缩减资源。这样可以进一步提高浏览器的稳定性、安全性和性能,同时优化资源利用率
-
浏览器架构 - 任务管理器
通过任务管理器,浏览器可以有效地监控和管理其各个进程,确保整个系统的稳定性、性能和安全性。不同浏览器的任务管理器实现可能会有所差异,但它们的核心功能和目标都是类似的。在谷歌Chrome浏览器中,用户可以通过按下Shift + Esc
快捷键或者在菜单中选择“更多工具” > “任务管理器”来打开任务管理器。
浏览器架构 - 多进程分工
进程名称 | 进程描述 |
---|---|
浏览器(主进程) | 主要负责页面展示逻辑,用户交互,子进程管理;包括地址栏、书签、前进、后退、收藏夹等 |
GPU进程 | 负责UI绘制,包含整个浏览器全部UI |
网络进程 | 网络服务进程,负责网络资源加载 |
标签页(渲染进程) | 控制tab内的所有内容,将HTML、CSS和JavaScript转换为用户可交互的网页 |
插件进程 | 控制网站运行的插件,比如flash、ModHeader等 |
其他进程 | 如上图所示:适用程序Storage/Network/Audio Service等 |
渲染进程
常见浏览器内核
内核 | 浏览器 | JS引擎 | |
---|---|---|---|
Trident | IE4-11 | JScript,Chakra | |
Gecko | Firefox | SpiderMonkey | |
Blink | Chrome,Opera | V8 | |
Edge | Edge | Chakra | |
Trident+Webkit(Blink) | 国产浏览器QQ、360、搜狗、UC等 | 都有 |