This commit is contained in:
qianguyihao
2021-03-31 20:03:26 +08:00
parent 05fd60dba2
commit 08d202095d
6 changed files with 27 additions and 211 deletions

View File

@@ -78,7 +78,7 @@ PS该DTD包含所有的HTML元素和属性但包括展示性的和弃用
**渲染树**包含了网页中有哪些节点节点的从属关系以及节点的CSS样式大小颜色等
我们写完前端代码之后计算机通过解释器把代码文本翻译成机器能理解的数据结构比如说html标签是由一对一对的尖括号表述的可以被浏览器解析为有含义的标记这些标记被翻译成节点对象存放到链型数据结构中这些节点被称之为**DOM对象**这个链型数据结构就是**渲染树**
浏览器下载完html文档之后第一步是先将其解析成文本html标签是由一对一对的尖括号表述的可以被浏览器解析为有含义的标记这些标记被翻译成节点对象存放到链型数据结构中这些节点被称之为**DOM对象**这个链型数据结构就是**渲染树**
### 渲染过程重要
@@ -92,13 +92,13 @@ PS该DTD包含所有的HTML元素和属性但包括展示性的和弃用
- CSSOMCSS Rule Tree浏览器将CSS解析成树形的数据结构CSSOM包含了节点的CSS样式大小颜色等
- 渲染树Render Tree: DOM 树与 CSSOM 合并后形成渲染树渲染树只包含渲染网页所需的节点但并不知道位置
- 渲染树Render Tree: DOM 树与 CSSOM **合并**后形成渲染树渲染树只包含渲染网页所需的节点但并不知道位置
- 布局Layout: 计算出每个节点在屏幕中的**位置和大小**
- 绘制Painting按照算出来的规则通过显卡把内容画出来
- composite合成浏览器在绘制的时候一开始不会把所有的内容都画在同一层上需要把这些层合成到一起最终显示在屏幕上
- composite合成浏览器在绘制的时候一开始不会把所有的内容都画在同一层上需要把这些内容画在不同的曾上最终合并到一起显示在屏幕上
参考链接
@@ -106,7 +106,7 @@ PS该DTD包含所有的HTML元素和属性但包括展示性的和弃用
### 关键渲染路径
浏览器渲染分为五个阶段
说到渲染就不得不提到关键渲染路径它描述的是渲染从触发到绘制的过程浏览器渲染经历了五个阶段
> JavaScript/CSS --> Style --> Layout --> Paint --> Composite
@@ -116,9 +116,9 @@ PS该DTD包含所有的HTML元素和属性但包括展示性的和弃用
关键渲染路径描述的是渲染从触发到绘制的全过程一共经历了五个阶段
1通过JSCSS代码来**触发**页面上的视觉变化
1**触发视觉的变化**通过JSCSS代码来**触发**页面上的视觉变化比如通过 jQuery添加节点通过CSS添加动画都可以触发视觉上的变化
2Style浏览器对样式进行计算
2Style浏览器对样式进行计算匹配选择器计算哪些CSS受到了影响
3layout同上一段
@@ -134,15 +134,15 @@ PS该DTD包含所有的HTML元素和属性但包括展示性的和弃用
## 重排回流Reflow
## 布局/回流/重排
### 定义
**重排 Reflow**
布局 layout
渲染对象在创建完成并添加到渲染树时是将DOM节点和它对应的样式结合起来并不包含位置和大小信息
我们还需要通过 `Layout` 布局阶段来计算它们在设备视口(viewport)内的确切位置和大小计算这些值的过程称为`回流``布局``重排`
我们还需要通过 `Layout` 布局阶段来计算它们在设备视口(viewport)内的确切位置和大小计算这些值的过程称为`回流``布局``重排Reflow`
@@ -152,11 +152,11 @@ PS该DTD包含所有的HTML元素和属性但包括展示性的和弃用
- [你真的了解回流和重绘吗](https://github.com/chenjigeng/blog/issues/4)
### 什么时候会触发 Reflow
### 什么时候会触发布局
> 核心就是围绕DOM元素的**大小****位置**
DOM元素的**大小****位置**发生变化的时候会触发布局
- 增加删除DOM节点
- 增加删除DOM元素
- display: none
@@ -176,22 +176,21 @@ PS该DTD包含所有的HTML元素和属性但包括展示性的和弃用
## 重绘Repaint
## 绘制/重绘
### 定义
**绘制 Repaint**当各种盒子的位置大小以及其他属性例如颜色字体大小等都确定下来后浏览器便把这些元素都按照各自的特性绘制一遍于是页面的内容出现了这个过程称之为 Repaint
**绘制 paint**当各种盒子的位置大小以及其他属性例如颜色字体大小等都确定下来后浏览器便把这些元素都按照各自的特性绘制一遍于是页面的内容出现了这个过程称之为 Repaint重绘制
说白了页面要呈现的内容统统画在屏幕上这就叫 Repaint
### 什么时候触发 Repaint
### 什么时候触发绘制
- DOM改动
- CSS改动
其实就是判断当前呈现的内容是否发生变化无论这个变化是通过DOM改动还是CSS改动只要页面显示的内容不一样了肯定要 Repaint
其实就是判断当视觉上是否发生变化无论这个变化是通过DOM改动还是CSS改动只要页面显示的内容不一样了肯定要 Repaint
**面试总结**

View File

@@ -84,7 +84,6 @@ network里的信息挺多我们可以将其保存下来留着以后做分
- Content Download收到响应后资源的下载时间如果值越大表明下载时间越长有些同步加载的资源会造成阻塞导致网页的整体加载时间过长让用户等待太久
**TTFB** 是一个很重要的指标它表示的是请求发出到响应到底要经历多久TTFB 可以给我们一个很直观的感受我们网站的请求和响应到底是快还是慢很大程度上是由 TTFB 决定
影响 TTFB 的因素是什么呢比如
@@ -267,7 +266,7 @@ RAIL 模型是Google提出的可以量化性能的测量**标准**。我们做
### preformance性能表现
### performance性能表现
![](http://img.smyhvae.com/20210116-0959.png)
@@ -362,7 +361,6 @@ WebPageTest 在世界各地提供了非常多的服务器,在每个服务器
![](http://img.smyhvae.com/20210115-2226.png)
### WebPageTest 报告分析
淘宝网站性能测试报告