浏览器渲染原理和性能优化的理解

什么叫渲染?

render==把html字符串转换为像素信息即为渲染

function render(html){

return pixels;

}

渲染发生在什么时候?

网络:获取字符串(html...) 网络进程---网络线程----获取

渲染:转为像素点

消息队列----渲染主线程----渲染任务

过程:HTML----解析---样式计算----布局----绘制----分块----光栅化--画-------像素信息

1.解析html(parse html)------两个树-----【DOM树,CSSOM树】

2.计算样式 computed style(css不会阻塞html,js会阻塞html,遇到解析js,先暂停解析html,解析js,因此阻塞了html解析)

3.布局(根据最终计算出来的样式进行布局---行盒 块盒)-----得到一个布局树

4.分层(提升效率)will-change:transform;

5.绘制(收到指令绘制,绘制什么样的点等等。类似canvas)

渲染主线程到此结束

6.分块(Tiling)将每一层分成不同的小区域(优先绘画视口显示的小区域-----由合成线程完成)

7.光栅化(将每个块变成位图)(优先视口的块光栅化,由GPU进程(多个线程)完成(比cpu功能更多))

8.画(quad指引信息交给GPU进程-----由合成线程完成,根据位图形成像素点)

复制代码
渲染进程(沙河安全,在浏览器中使用GPU,无法使用硬件)----渲染主线程----合成线程

transform不在主线程上 所以效率会很高

什么是reflow(重新排版)?

修改了dom,cssom几何信息的时候,需要重新计算样式的过程称为refolw。获取到几何信息后,立即执行reflow,解决性能问题。

什么是repaint?

根据分层信息得到重绘指令。如果分层变化,就会重新发送重绘的指令,进行重绘。

为什么transform效率高?

因为transform只影响最后一步draw,所以效率高,不会产生重新计算,重新绘画等过程。(滚动条也是)

相关推荐
工业HMI实战笔记3 小时前
机床设备HMI:加工参数可视化与故障诊断界面
ui·性能优化·自动化·汽车·交互
yuanmenghao5 小时前
Linux 性能实战 | 第 20 篇:trace-cmd 与 kernelshark 可视化分析 [特殊字符]
linux·python·性能优化
国科安芯6 小时前
航空级电机控制系统的抗辐照MCU功能安全设计与电磁兼容验证方法
单片机·嵌入式硬件·安全·性能优化·架构·安全性测试
熊猫钓鱼>_>9 小时前
【开源鸿蒙跨平台开发先锋训练营】Day 21:深度探索智能图片处理与极致性能优化
react native·华为·性能优化·开源·交互·harmonyos·鸿蒙应用
yuanmenghao9 小时前
Linux 性能实战 | 第 19 篇:ftrace 内核跟踪入门 [特殊字符]
linux·python·性能优化
Trouvaille ~10 小时前
【Linux】TCP可靠性与性能优化详解:从确认应答到拥塞控制
linux·运维·服务器·网络·tcp/ip·性能优化·操作系统
消失的旧时光-19431 天前
第十八课实战:后端性能优化实战——一个接口从 2 秒到 90ms 的全过程
性能优化
叶智辽1 天前
【ThreeJS实战】5个让我帧率翻倍的小技巧,不用改模型
性能优化·three.js
yuanmenghao1 天前
Linux 性能实战 | 第 17 篇:strace 系统调用分析与性能调优 [特殊字符]
linux·python·性能优化
工业HMI实战笔记1 天前
包装机械HMI:快速换型与配方管理的界面解决方案
ui·性能优化·自动化·汽车·交互