客户端容器|青训营笔记

68 阅读3分钟

浏览器架构

单进程架构:所有模块运行在同一个进程里,包含网络、插件、JavaScript运行环境等

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

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

多进程分工

6c5bfdb5d3d04c60cf2d50fc4d278ee.png

渲染进程

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

JS引擎VS渲染引擎

JS引擎可以解析执行JS,翻译成字节码后解析执行。经过优化后,翻译成机器码后直接执行。

渲染引擎的XML解析生成渲染树,显示在屏幕。

JS引擎和渲染引擎通过桥接通信

Chrom运行原理

输入处理:UI线程会判断输入的是URL地址还是query查询条件,如果是url则直接请求站点资源,如果是query,将输入发送给搜索引擎。

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

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

如果响应主体是一个HTML文件,浏览器将内容交给渲染进程处理

如果拿到的是其他类型文件,比如Zip.exe等,则交给下载管理器处理。

寻找渲染过程: 1.网络线程做完所有检查后,会告知主进程数据已准备完毕,主进程确认后为这个站点寻找一个渲染进程

2.主进程通过IPC消息告知渲染进程去处理本次导航

3.渲染进程开始接收数据并告知主进程自己已开始处理,导航结束,进入文档加载阶段

资源加载:收到主进程的消息后,开始加载HTML文档

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

构建渲染树:1.构建DOM树,将HTML文本转化成浏览器能够理解的结构

2.构建CSSOM树,浏览器同样不认识CSS,需要将CSS代码转化为可理解的CSSOM

3.构建渲染树,渲染树是DOM树和CSSOM树的结合

页面布局:1.根据渲染树计算每个节点的位置和大小

2.在浏览器页面区域绘制元素边框

3.遍历渲染树,将元素以盒模型的形式写入文档流.

页面绘制: 1.构建图层:为特定的节点生成专用图层 2.绘制图层:一个图层分成很多绘制指然后将这些指令按顺序组成一个绘制列表,交给合成线程 3.合成线程接收指令生成图块 4.栅格线程将图块进行栅格化 5.展示在屏幕上

首屏优化 1.压缩、分包、删除无用代码

2.静态资源分离

3.JS脚本非阻塞加载

4.缓存策略

5.SSR

6.预置loading、骨架屏

渲染优化

1.GPU加速

2.减少回流、重绘3.离屏渲染

4.懒加载