当前位置: 首页 > news >正文

js和css阻塞问题

面试常见问题

  • css 加载会不会阻塞 js 的加载?(不会)
  • css 加载会不会阻塞 js 的执行?(会)
  • css 加载会不会阻塞 DOM 的解析?(不会)
  • css 加载会不会阻塞 DOM 的渲染?(会)
  • js 加载会不会阻塞 DOM 的解析?(会)
  • js 加载会不会阻塞 DOM 的渲染?(会)
  • js 执行会不会阻塞 DOM 的解析?(会)
  • js 执行会不会阻塞 DOM 的渲染?(会)

浏览器工作原理

  • JS 引擎线程(单线程):负责解析 Javascript 脚本,运行代码
  • GUI 渲染线程:负责渲染浏览器界面,解析 HTML,CSS,构建 DOM Tree,Style Tree 和 Render Tree,布局和绘制等

注意:GUI 渲染线程与 JS 引擎线程是互斥的,当 JS 引擎执行时 GUI 线程会被挂起,所以当 JS 加载和执行时,会阻塞住 DOM 的解析和渲染,导致白屏时间很长

浏览器渲染过程

1.解析 HTML 生成 DOM Tree
2.解析 CSS 生成 Style Tree
3.将 DOM Tree 与 Style Tree 合并在一起生成 Render Tree
4.遍历 Render Tree 开始布局,计算每个节点的位置大小信息(Layout)
5.绘制 Render Tree,绘制页面的像素信息(Painting),显示到屏幕上(Display)

DOM Tree 和 Style Tree 是并行构建的,所以 CSS 加载不会阻塞 DOM 的解析
由于 Render Tree 是依赖于 DOM Tree 和 Style Tree 的,因此,css 加载会阻塞 Dom 的渲染
GUI 渲染线程与 JS 引擎线程是互斥的,加载解析 css 时,JS 引擎会被挂起,所以 css 会阻塞 js 的执行

资源优先级

1.html 、 css 、 font 这三种类型的资源优先级最高
2.然后 script 、 xhr 请求
3.接着是图片、语音、视频

http://www.lryc.cn/news/313586.html

相关文章:

  • MySQL 的基础操作
  • 【python进阶篇】面向对象编程(1)
  • 力扣面试经典150 —— 6-10题
  • [密码学]入门篇——加密方式
  • 构建前后端分离项目常用的代码
  • 2575. 找出字符串的可整除数组(Go语言)
  • Redis与 Memcache区别
  • #QT(智能家居界面-界面切换)
  • js拓展-内置对象
  • 【李沐精读系列】GPT、GPT-2和GPT-3论文精读
  • Libevent的使用及reactor模型
  • 查看Linux服务器配置
  • 【机器学习】包裹式特征选择之递归特征添加法
  • 解决cs不能生成Linux木马的问题
  • vue3组件通信方式
  • 前端实现生成图片并批量下载,下载成果物是zip包
  • android 快速实现 圆角矩形控件 及 圆形控件
  • 【Python】外网远程登录访问jupyter notebook+pycharm使用ipython
  • error:0308010C:digital envelope routines::unsupported
  • Vue前端的工作需求
  • 97. 常用的HTTP服务压测工具
  • 活动预告|听云猿生数据创始人 CEO 曹伟分享云数据库行业十余年经验总结
  • 数仓实战——京东数据指标体系的构建与实践
  • Alias许可配置
  • 【读书笔记】针对ICS的ATTCK矩阵详解(一)
  • Rust多线程访问数据,推荐使用mutex还是channel?
  • 基于pytorch的手写体识别
  • Leetcode 56. 合并区间
  • C++:List的使用和模拟实现
  • 20个Python函数程序实例