客户端容器学习笔记

64 阅读2分钟

浏览器架构

架构演进

  • 单进程架构:所有的模块运行在同一个进程里,包含网络、插件、Javascript运行环境等。
  • 多进程架构:主进程、网络进程、渲染进程、GPU进程、插件进程。
  • 面向服务架构:将原来的UI、数据库、文件、设备、设备等,作为一个独立的基础服务。

架构对比

架构类型扩展性安全性确定性流畅性
单进程卡顿
多进程流畅
面向服务架构流畅

多进程分工

进程名称进程描述
浏览器(主进程)主要负责页面展示逻辑,用户交互,子进程管理;包括地址栏,书签,前进,后退,收藏夹等
GPU进程负责UI绘制,包含整个浏览器全部UI
网络进程网络服务进程,负责网络资源加载
标签页(渲染进程)控制tab内的所有内容,将HTML,CSS和Javascript转换为用户可交互的页面
操作进程控制网站运行的插件,比如flash,ModHeader
其他进程适用程序Storage/Network/Audio Service等

渲染进程

多线程架构

内部是多线程实现,主要负责页面渲染,脚本执行,事件处理,网络请求等

多线程工作流畅

  1. 网络线程负责加载网页资源
  2. JS引擎解析JS脚本并执行
  3. JS解析引擎空闲时,渲染线程立即工作
  4. 用户交互,定时器操作等产生回调函数放入任务队列中
  5. 事件线程进行事件循环,将队列里任务取出交给JS引擎执行

Chrome运行原理

graph TD
输入处理 --> 开始导航 --> 读取响应 --> 寻找渲染进程

渲染进程

资源加载
  1. 收到主进程的消息后,开始加载HTML文档
  2. 加载子资源
构建渲染树
  1. 构建DOM树,将HTML文本转换为浏览器能够理解的结构
  2. 构建CSSOM树,浏览器同样不认识CSS,需要将CSS代码转化为可理解的CSSOM
  3. 构建渲染树,渲染树是DOM树和CSSOM树的结合
页面布局
页面绘制