浏览器架构

背景

CPU 与 GPU

计算机架构

进程与线程

进程间的通信 IPC

浏览器架构

进程工作内容

浏览器进程

渲染进程

插件进程

GPU 进程

多进程架构的好处

面向服务的架构

基于站点隔离的渲染进程

一次访问

输入处理

访问开始

处理响应数据

渲染过程

提交访问

加载完毕

访问不同的站点

Service Worker

访问预加载

渲染进程负责页面的内容

解析过程

DOM 的创建

额外资源的加载

JavaScript 会阻塞转化过程

告诉浏览器要如何加载资源

样式计算

布局 layout

绘制 Paint

渲染过程是昂贵的

合成 Compositing

层 Layer

栅格线程与合成线程

从浏览器角度看事件

合成线程对事件的处理

标记"慢滚动"区域

在事件监听时标记

查找事件目标

减少发送给主线程的事件数量

总结

  • 浏览器进程做为最重要的进程负责大多数页签外部的工作,包括地址栏显示、网络请求、页签状态管理等。
  • 不同的渲染进程负责不同的站点渲染工作,渲染进程间彼此独立。
  • 渲染进程在渲染页面的过程中会通过浏览器进程获取站点资源,只有安全的资源才会被渲染进程接收到。
  • 渲染进程中主线程负责除了图像生成外绝大多数工作,如何减少主线程上代码的运行是交互性能优化的关键。
  • 渲染进程中的合成线程和栅格线程负责图像生成,利用分层技术可以优化图像生成的效率。
  • 当用户与页面发生交互时,事件的传播途径从浏览器进程到渲染进程的合成线程再根据事件监听的区域决定是否要传递给渲染进程的主线程处理。