day11-浏览器架构总结分享 | 青训营笔记

98 阅读5分钟

浏览器架构是指浏览器在内部是如何构建的,以及各个模块如何协同工作的。随着浏览器的发展,架构也在不断变化和完善。本次笔记分三个部分详细介绍浏览器架构的变迁、各架构的对比以及多进程架构的介绍。

1、浏览器架构变迁

早期的浏览器是单进程、单线程架构。这种架构的特点是简单易懂,适合处理简单的网页。但随着网页变得更加复杂,这种架构的缺点也变得越来越明显,无法满足当今网页的需求。

为了解决这些问题,浏览器开始引入多进程架构。最早的多进程架构是IE8中的Loosely-Coupled IE(LCIE)。这种架构通过在操作系统级别创建进程来隔离不同的标签页,从而提高了浏览器的稳定性和安全性。Chrome浏览器也采用了多进程架构,将每个标签页作为一个独立的进程运行,从而实现了更高的稳定性和安全性。

另一方面,浏览器架构还不断地引入新的技术和思想。例如,Webkit引擎采用了分层架构和流水线架构,将页面的渲染过程拆分成多个阶段,每个阶段由不同的线程来处理,从而提高了页面的渲染速度和效率。Chrome浏览器中还引入了V8引擎,使用即时编译技术实现了更快的JavaScript解释速度。

2、浏览器各架构对比

2.1 单进程架构

单进程架构指的是浏览器只有一个主进程,负责所有任务的执行,包括用户界面、JS解释器、页面渲染等。这种架构的优点是简单易懂,执行效率高。但是,由于所有任务在一个进程中执行,当其中任何一个任务崩溃时,整个浏览器都会崩溃。

2.2 多进程架构

多进程架构指的是浏览器将不同的任务分配给不同的进程来执行,例如页面渲染进程、JS解释器进程、插件进程等。这种架构的优点是稳定性高,当其中一个进程崩溃时,不会影响到其他进程的执行。但是,多进程架构需要占用更多的系统资源。

2.3 多线程架构

多线程架构指的是浏览器在同一进程中开启多个线程来执行不同的任务,例如UI线程、JS线程、网络线程等。这种架构的优点是更为灵活,可以更好地利用系统资源,提高执行效率。但是,多线程架构容易出现死锁、竞争条件等问题。

2.4 混合架构

混合架构是以上架构的组合形式,既包括多进程架构的稳定性,又包括多线程架构的效率。例如,Chrome浏览器就采用了多进程+多线程的混合架构,每个标签页都对应着一个进程,每个进程中有多个线程来执行不同的任务。

总的来说,各种架构都有各自的优缺点,选择适合的架构需要根据具体的场景进行综合考虑。

3、多进程架构介绍

多进程架构是现代浏览器架构的一种常见实现方式,它基于多进程的操作系统特性实现了一种更为健壮的架构。在这种架构下,每个标签页(或者每组标签页)都被分配一个独立的进程,这些进程之间通过进程间通信(IPC)进行通信。

多进程架构的优点在于:

  • 提高浏览器的稳定性:每个标签页的渲染进程相互独立,即使某一个标签页出现了崩溃或者死循环等问题,其他标签页也不会受到影响。
  • 提高浏览器的安全性:不同站点之间的脚本不能直接相互访问,这样可以有效地防止跨站点脚本攻击(XSS)和跨站点请求伪造(CSRF)等安全问题。
  • 提高浏览器的性能:多进程架构可以有效利用多核处理器,使得浏览器的整体性能得到提升。

当用户在浏览器中打开一个新的标签页时,浏览器会为该标签页分配一个新的进程,并为该进程分配一个渲染引擎进程和一个 JavaScript 引擎进程。当用户在当前标签页中点击链接时,浏览器会创建一个新的渲染进程,并在该进程中加载新的页面。此外,浏览器还会为每个插件分配一个独立的进程。

多进程架构也存在一些缺点,比如进程间通信会带来一定的开销,同时每个进程都需要占用一定的内存和 CPU 资源,因此多进程架构对于一些内存和 CPU 有限的设备来说可能不太适用。此外,由于每个进程都需要维护自己的状态,因此多进程架构也会带来一定的系统开销。

总的来说,多进程架构是现代浏览器架构的一种重要实现方式,它通过将不同的功能和任务分配到不同的进程中,提高了浏览器的稳定性、安全性和性能。