笔记说明
浏览器工作原理与实践是李兵【前盛大创新院高级研究员】在极客时间开的一个专栏,透过浏览器看懂前端本质, 笔者主要整理学习过程的一些要点笔记以及感悟,完整的可以加入李兵老师的专栏学习。
一、chrome 仅仅打开一个页面,为什么会有4个进程?
在回答这个问题之前, 李兵老师先详细的讲解了进程和线程的区别,在此附上我对老师讲解内容的整理
-
进程和线程
-
单进程浏览器、多进程浏览器
所以最新的 Chrome 浏览器包括:
- 浏览器进程: 主要负责界面显示、用户交互、子进程管理,同时提供存储等功能
- GPU进程:网页、Chrome 的 UI 界面都选择采用 GPU 来绘制。
- 网络进程:面向渲染进程和浏览器进程等提供网络下载功能。
- 渲染进程:把从网络下载的 HTML、JavaScript、CSS、图片等资源解析为可以显示和交互的页面
- 多个插件进程
因为渲染进程的内容是通过网络获取的,获取的文件可能会存在恶意代码,这些代码是不安全不被信任的。所以渲染进程是运行在安全沙箱里的。
这也就解释了为什么打开一个页面 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页面的渲染进程,也就是说他们是在同一个渲染进程),就会导致一个页面崩溃,同一站点的其他页面也会崩溃。所以即使是如今的多进程浏览器 也会出现一个页面崩溃卡死最终导致多个页面卡死