[TOC]

浏览器多进程架构简介

多进程架构 好处:1. 一个页面崩溃了,不会影响到页面(其他域)。2. 进程间分工明确,有不同权限,会更安全高效

缺点:不同的进程间,内存不共享。所以不同进程的内存常常需要包含相同的内容

另:iframe也会有独立渲染进程

顶层存在一个Browser process,能协调其他进程

浏览器多进程架构简介 - 图1

  1. Browser Process:(资源的加载 此进程处理)
    1. 又细分了3个线程
      1. UI thread : 控制浏览器上的按钮及输入框;
      2. network thread: 处理网络请求,从网上获取数据;
        1. 如果响应的内容文件是html,下一步把这些数据传递给renderer process。如果是zip或其他,则传输给下载管理器
  3. storage thread: 控制文件等的访问;
  • 负责包括地址栏,书签栏,前进后退按钮等部分的工作;
  • 负责处理浏览器的一些不可见的底层操作,比如网络请求和文件访问;
  1. Renderer Process:(资源的解析,执行,渲染 此进程处理)
    负责一个 tab 内关于网页呈现的所有事情
    线程:
    1. 主线程 Main thread
    2. 工作线程 Worker thread
    3. 排版线程 Compositor thread
      1. 合成帧
  1. 光栅线程 Raster thread
  1. Plugin Process:
    负责控制一个网页用到的所有插件,如 flash
  2. GPU Process
    负责处理 GPU 相关的任务

浏览器多进程架构简介 - 图2

个人结论

资源的加载(含dns查找 TSL协商 tcp握手)资源的解析执行 是2个不同的进程处理的,所以可以并行


整理参考:https://zhuanlan.zhihu.com/p/47407398


性能优化合集快速入口: