浏览器渲染原理

浏览器渲染原理


目录

目录

浏览器渲染原理

B/S架构及其运行原理

渲染过程

         defer async不会阻塞页面解析



B/S架构及其运行原理

b/s架构是Brower/Server结构

chrome浏览器渲染速度最快不同于其他浏览器,因为chrome使用多个渲染引擎,每个tab页有独立的进程

 

GUI渲染引擎负责渲染HTML元素,当页面需要重绘时候也会执行,在JavaScript引擎执行期间,GUI引擎会被挂起(冻结),原因是JavaScript引擎可以操作dom树和css树。

 

因为JavaScript是单线程,所及计时器执行会阻断线程,所以计时器是独立线程。

 

事件处理队列,鼠标点击回调,Ajax异步请求等,都是浏览器的独立线程,但是在这写独立线程中存在事件队列,因为JavaScript引擎要一个一个解析。

 

渲染过程


请求来的HTML文本文件进行渲染,每次渲染块不会超过8k,浏览器解析文档生成dom树,接下来不管是内联式还是外嵌式都会被解析生成Render树,对dom树的结点进行布局处理,最后遍历渲染树并用UI后端层将每一个节点绘制出来(客户体验,一般浏览器都是按以上步骤渲染最后统一渲染出界面ui给浏览器)

这里的dom树结构是一种深度遍历实现的,当浏览器的某个部分发生改变时候影响了布局,reflow从html开始递归dom树,

当页面颜色等发生改变的时候repaint重绘ui界面

 

浏览器最优先处理的是css,HTML 和 CSS 都是阻塞渲染的资源,css不会阻塞dom解析,css会阻塞js执行,css会阻塞dom树渲染。

<script async>console.log("1")</script>
<script defer>console.log("2")</script>
<script>console.log("3")</script>

defer async不会阻塞页面解析

defer作用简单来说延时执行,当浏览器dom全部加载完,开始执行js,从上到下执行。

async执行顺序不一定,需要看执行时间等。

console.log(document.createElement("script").async); // true

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值