浏览器架构
背景
CPU 与 GPU
计算机架构
进程与线程
进程间的通信 IPC
浏览器架构
进程工作内容
浏览器进程
渲染进程
插件进程
GPU 进程
多进程架构的好处
面向服务的架构
基于站点隔离的渲染进程
一次访问
输入处理
访问开始
处理响应数据
渲染过程
提交访问
加载完毕
访问不同的站点
Service Worker
访问预加载
渲染进程负责页面的内容
解析过程
DOM 的创建
额外资源的加载
JavaScript 会阻塞转化过程
告诉浏览器要如何加载资源
样式计算
布局 layout
绘制 Paint
渲染过程是昂贵的
合成 Compositing
层 Layer
栅格线程与合成线程
从浏览器角度看事件
合成线程对事件的处理
标记"慢滚动"区域
在事件监听时标记
查找事件目标
减少发送给主线程的事件数量
总结
- 浏览器进程做为最重要的进程负责大多数页签外部的工作,包括地址栏显示、网络请求、页签状态管理等。
- 不同的渲染进程负责不同的站点渲染工作,渲染进程间彼此独立。
- 渲染进程在渲染页面的过程中会通过浏览器进程获取站点资源,只有安全的资源才会被渲染进程接收到。
- 渲染进程中主线程负责除了图像生成外绝大多数工作,如何减少主线程上代码的运行是交互性能优化的关键。
- 渲染进程中的合成线程和栅格线程负责图像生成,利用分层技术可以优化图像生成的效率。
- 当用户与页面发生交互时,事件的传播途径从浏览器进程到渲染进程的合成线程再根据事件监听的区域决定是否要传递给渲染进程的主线程处理。