浏览器工作原理与实践学习笔记(一)--chrome架构

2,279

笔记说明

浏览器工作原理与实践是李兵【前盛大创新院高级研究员】在极客时间开的一个专栏,透过浏览器看懂前端本质, 笔者主要整理学习过程的一些要点笔记以及感悟,完整的可以加入李兵老师的专栏学习。

一、chrome 仅仅打开一个页面,为什么会有4个进程?

在回答这个问题之前, 李兵老师先详细的讲解了进程和线程的区别,在此附上我对老师讲解内容的整理

  1. 进程和线程

  2. 单进程浏览器、多进程浏览器

所以最新的 Chrome 浏览器包括:

  1. 浏览器进程: 主要负责界面显示、用户交互、子进程管理,同时提供存储等功能
  2. GPU进程:网页、Chrome 的 UI 界面都选择采用 GPU 来绘制。
  3. 网络进程:面向渲染进程和浏览器进程等提供网络下载功能。
  4. 渲染进程:把从网络下载的 HTML、JavaScript、CSS、图片等资源解析为可以显示和交互的页面
  5. 多个插件进程

因为渲染进程的内容是通过网络获取的,获取的文件可能会存在恶意代码,这些代码是不安全不被信任的。所以渲染进程是运行在安全沙箱里的。

这也就解释了为什么打开一个页面 chrome会出现4个进程。如果页面中嵌有iframe,并且这些iframe域名不同,渲染进程的数量也会相应增加。

“同一站点”定义为根域名(例如,geekbang.org)加上协议(例如,https:// 或者 http://),还包含了该根域名下的所有子域名和不同的端口,比如下面这三个:

https://time.geekbang.org
https://www.geekbang.org
https://www.geekbang.org:8080
// 它们都是属于同一站点,因为它们的协议都是 HTTPS,而且根域名也都是 geekbang.org。

通常情况下,一个页面使用一个进程(每个标签都会有自己的渲染进程),但是有些情况下(从A页面打开了一个新的页面B页面,而且A,B页面恰巧属于同一站点,B页面就会复用A页面的渲染进程,也就是说他们是在同一个渲染进程),就会导致一个页面崩溃,同一站点的其他页面也会崩溃。所以即使是如今的多进程浏览器 也会出现一个页面崩溃卡死最终导致多个页面卡死