浏览器的关键渲染路径 
浏览器从输入url到页面展示,中间发生了什么 
- DNS解析:将域名解析成- IP地址
- TCP连接:TCP 三次握手
- 发送 HTTP请求
- 服务器处理请求并返回 HTTP报文
- 浏览器解析渲染页面(如何渲染) - 构建dom文档对象
- 获取外部资源
- 构建css文档对象
- 执行javascript,启动事件循环
- 合并dom,css文档对象,生成渲染树
- 计算布局和绘制(触发重绘和回流)
 
- 断开连接:TCP 四次挥手
load事件和DOMConentLoaded事件的区别 
- load事件指dom、css、js、图片等资源全部加载完成
- DOMConentLoaded指dom元素加载完成,其他资源不一定加载完成
图层 
通常渲染dom时只有一个图层,但当满足特定情况时,会渲染多个图层
渲染DOM时的实际情况 
- 获取dom后查看是否需要分割为多个图层
- 对每个图层的元素计算样式结果(Recalculate style)
- 为每个元素生成图形和位置(Layout--重排,回流)
- 将元素绘制填充到图层位图中(Paint--重绘)
- 图层作为纹理提交给gpu,gpu组合图层渲染到页面
创建新图层的条件 
- 具有3D变换的CSS属性:transform:translateZ(0)
- video、- canvas元素
- iframe元素
- css animation元素
- 拥有css加速属性的元素:will-change
调试工具查看图层 
- more tools
- layouts
重绘和重排(回流) 
- 重绘:当一个元素的布局不变,外观发生改变时
- 回流:当改变一个页面的布局时就会发生回流,在获取某些属性时也会触发重排
减少重绘和重排:
- 减少DOM操作,多次使用时缓存DOM元素
- 减少获取某些属性,将他们缓存起来使用
- 使用动画时,使元素脱离文档流
- 使用css3硬件加速,下列属性将触发硬件加速 - transform
- opacity
- filters
- will-change
 
