客户端容器 | 青训营笔记

32 阅读3分钟

浏览器架构

浏览器架构演进

  1. 单进程架构:所有模块运行在同一个进程里,包含网络、插件、JavaScript运行环境等

    • 在早期的浏览器中,所有的功能都在一个进程中完成,包括用户界面、JavaScript执行、CSS渲染和网络请求等。单进程架构的优势是简单、易于实现,但缺点也很明显,如:不稳定(一个标签页崩溃可能导致整个浏览器崩溃)、不安全(攻击者可以利用漏洞来控制整个浏览器)以及性能瓶颈(多个标签页争抢资源,导致性能下降)。
  2. 多进程架构:主进程、网络进程、渲染进程、GPU进程、插件进程

    • 为了解决单进程架构的问题,浏览器厂商开始将浏览器的功能拆分为多个进程。例如,谷歌推出的Chrome浏览器就采用了多进程架构。在这种架构下,浏览器将每个标签页(或每个渲染实例)分配给一个单独的进程,从而实现了进程间的隔离,防止单个网页崩溃影响到其他界面。多进程架构提高了浏览器的稳定性、安全性和性能,但同时也增加了内存消耗
    • 每一个Tab运行在独立的沙盒里面
  3. 面向服务架构:将原来的UI、数据库、文件、设备、网络等,作为一个独立的基础服务

    • 面向服务架构 => 多进程架构升级版本

    • 随着Web平台的发展,浏览器需要处理越来越多的任务,这使得多进程架构变得复杂且难以维护。面向服务架构的出现旨在将浏览器的各个功能模块化,将它们作为独立的服务来运行和维护。在这种架构下,每个服务都可以独立地使用一个或多个进程,根据需求自动扩展或缩减资源。这样可以进一步提高浏览器的稳定性、安全性和性能,同时优化资源利用率

浏览器架构 - 任务管理器

通过任务管理器,浏览器可以有效地监控和管理其各个进程,确保整个系统的稳定性、性能和安全性。不同浏览器的任务管理器实现可能会有所差异,但它们的核心功能和目标都是类似的。在谷歌Chrome浏览器中,用户可以通过按下Shift + Esc快捷键或者在菜单中选择“更多工具” > “任务管理器”来打开任务管理器。

浏览器架构 - 多进程分工

进程名称进程描述
浏览器(主进程)主要负责页面展示逻辑,用户交互,子进程管理;包括地址栏、书签、前进、后退、收藏夹等
GPU进程负责UI绘制,包含整个浏览器全部UI
网络进程网络服务进程,负责网络资源加载
标签页(渲染进程)控制tab内的所有内容,将HTML、CSS和JavaScript转换为用户可交互的网页
插件进程控制网站运行的插件,比如flash、ModHeader等
其他进程如上图所示:适用程序Storage/Network/Audio Service等

渲染进程

常见浏览器内核

内核浏览器JS引擎
TridentIE4-11JScript,Chakra
GeckoFirefoxSpiderMonkey
BlinkChrome,OperaV8
EdgeEdgeChakra
Trident+Webkit(Blink)国产浏览器QQ、360、搜狗、UC等都有