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

笔记说明前端

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

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

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

  1. 进程和线程 安全

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

因此最新的 Chrome 浏览器包括:网络

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

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

这也就解释了为何打开一个页面 chrome会出现4个进程。若是页面中嵌有iframe,而且这些iframe域名不一样,渲染进程的数量也会相应增长。spa

“同一站点”定义为根域名(例如,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页面的渲染进程,也就是说他们是在同一个渲染进程),就会致使一个页面崩溃,同一站点的其余页面也会崩溃。因此即便是现在的多进程浏览器 也会出现一个页面崩溃卡死最终致使多个页面卡死 线程