Web浏览器学习 | 青训营笔记

33 阅读3分钟

前言

本文为笔者在初学Web时的学习记录,如有错误请大家指出。

正文

浏览器架构

  • 单进程架构:所有模块都运行在同一个进程里。

特点:扩展性低,安全性低,稳定性低,流畅度较卡顿。内存占用较小,节约系统资源。

  • 多进程架构:主进程、网络进程、渲染进程、GPU进程、插件进程。

特点:扩展性中,安全性高,稳定性高,流畅度较流畅。内存占用较高。

  • 面向服务架构:将原来的UI、数据库、文件、设备、网络等,作为一个独立的基础服务。

特点:扩展性高,安全性高,稳定性高,流畅度较流畅。内存占用较高。

Chrome运行原理

浏览器主进程:输入处理->开始导航->读取响应->寻找渲染进程

11%}JVH5Y9C63G{J{CYCSV.png

输入处理

用户Url框输入内容后,UI线程会判断输入:

  • 如果是URL,直接请求站点资源
  • 如果是query,将输入发送给搜索引擎

AKI~$PV~3HA81IY~)A9TI.png

开始导航

当用户按下回车后,UI线程通知网络线程发起一个网络请求,来获取站点内容。在请求过程中,tab是处于loading状态的。

image.png

读取响应

网络线程接收到HTTP响应后,先检查响应头的媒体类型(MIME Type):

  • 如果响应主体是一个HTML文件,浏览器将内容交给渲染进程处理。
  • 如果拿到的是其他类型文件,比如Zip、exe等,此时运用下载逻辑进行处理,交给下载管理器处理。

寻找渲染进程

  1. 网络线程做完所有检查后,会告知主进程数据已准备完毕,主进程确认后为这个站点寻找一个渲染进程。
  2. 主进程通过IPC消息告知渲染进程去处理本次导航。
  3. 渲染进程开始接收数据并告知主进程自己已开始处理,导航结束,进入文档加载阶段。

渲染进程

资源加载->构建渲染树->页面布局->页面绘制

资源加载

加载HTML文档。除此之外,还需要加载子资源,比如一些图片,CSS样式文件以及JavaScript脚本。

image.png

构建渲染树

构建DOM树,将HTML文本转化成浏览器能够理解的结构。构建CSSOM树,浏览器同样不认识,将CSS代码转化为可理解的CSSOM树。而渲染树就是DOM树和CSSOM树的结合。

页面布局

根据渲染树计算每个节点的位置和大小; 在浏览器页面区域绘制元素边框; 遍历渲染树,将元素以盒模型的形式写入文档流。

页面绘制

构建图层:为特定的节点生成专用图层

绘制图层:一个图层分成很多绘制指令,然后将这些指令按顺序组成一个绘制列表,交给合成线程

合成线程接收指令生成图块

栅格线程将图块进行栅格化

展示在屏幕上

image.png