美文网首页
关于CSS堵塞和JS堵塞

关于CSS堵塞和JS堵塞

作者: 辉夜真是太可爱啦 | 来源:发表于2021-12-22 11:42 被阅读0次

前言

大家好,我是辉夜真是太可爱啦

在上一文中,我们大致描述了浏览器的渲染过程。但是,由于 HTML 文档的解析过程,也是挺复杂的。所以我们专门将它抽离了出来。

先来说加载的意义:下载 + 执行。

CSS

1. CSS 文件是并行下载的

2. CSS 并不会阻塞构建 DOM树

3. CSS 的下载不会阻塞后面 JS 的下载,但是 JS 下载完成后,被阻塞执行

但是, CSS 加载会影响 JS 代码的执,这个起初我也感觉很不可思议,让我们来看个例子:

为了方便测试,大家可以把谷歌浏览器的网速进行设置

网速设置.png 网速设置.png
<!DOCTYPE html>
<html lang="en">
<head>
    <title>css阻塞</title>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <script>
        alert('文档开始解析了!');
    </script>
    <link href="https://cdn.bootcss.com/bootstrap/4.0.0-alpha.6/css/bootstrap.css" rel="stylesheet">
</head>
<body>
<h1>这是红色的</h1>
</body>
<script>
    alert('文档解析结束了!');
</script>
</html>

文档会从上往下进行解析,先执行 alert('文档开始解析了!'); ,然后,遇到 link 标签,加载外链 CSS ,直到加载完成之后,才会执行下面的 alert('文档解析结束了!');

这是由于 JS 可能会获取或者改变元素的样式,所以浏览器会按照顺序,等上面的 CSS 加载解析完成之后,再执行下面的 JS 。

JS

  1. 现代浏览器会并行加载 JS 文件,但是按照书写顺序执行代码

  2. 加载或者执行 JS 时会阻塞构建 DOM树,只有等到js执行完毕,浏览器才会继续解析 DOM 。没有 DOM树 ,浏览器就无法渲染,所以当加载很大的 JS 文件时,可以看到页面很长时间是一片空白。

这是因为加载的 JS 中可能会创建,删除节点等,这些操作会对 DOM树 产生影响,如果不阻塞,等浏览器解析完标签生成 DOM树后, JS 修改了某些节点,那么浏览器又得重新解析,然后重新生成 DOM树,性能比较差。

如果你不想 JS 阻塞你的 DOM树 生成,也是有方法的。

defer / async

deferasync 都是作用于 外链JS 的。对于 内部JS 是没有效果的。

deferasync 都是异步的,主要的区别在于执行顺序以及执行的时间。

async 标志的脚本文件一旦加载完成就会立即执行,并且不会按照书写顺序,谁下载好了就直接执行。所以适用于那些没有代码依赖顺序,并且没有 DOM操作 的脚本文件。

defer 标志的脚本文件会严格按照书写顺序执行,并且,会在 DOMContentLoaded 事件之前(也就是页面DOM加载完成时)执行。适用于有 DOM操作 ,或者是有代码依赖顺序的脚本文件。

相关文章

  • 关于CSS堵塞和JS堵塞

    前言 大家好,我是辉夜真是太可爱啦 。 在上一文中,我们大致描述了浏览器的渲染过程[https://juejin....

  • 如何加快前端页面打开速度

    希望加快页面打开速度, 可以从以下几个方面着手: 1. 减少渲染堵塞 避免head标签JS堵塞 把 放到body后...

  • 堵塞

    当一个人走在街上, 不知不觉走到死胡同。 第一感觉不是失落,而是诧异。 一种不知所措,面对将来的未知困顿。 这种东...

  • 堵塞

    视野堵鼠目寸光,耳闭听置身虫洞;鼻失嗅无灵世界,血管堵塞疼痛也;人有差距是围堵,想得力量破堵塞。

  • 堵塞

    如果记忆可以篡改 我想把有些过往写成一颗尘埃 然后慢慢消失在脑海 酒后总会有一些感慨 该不该问该与不该 心中矛盾怎...

  • 堵塞

    双手在键盘上,无处安放,不知该敲出些什么文字,有一种毛孔被堵塞的感觉,有层厚厚的膜挡在那里。这个膜是什么呢...

  • 堵塞

    每一天 家里都是丧气满满 乌烟瘴气 父亲软弱 没有阳光积极靠得住的气概 母亲神经兮兮健忘又臆想 一点都不冷静 弟也...

  • 堵塞

    上个月,在网上下单的一只足浴盆到了,收到货后很满意。 此盆是塑料材料,价钱也不贵,109元,盆带充电。功能么,可以...

  • IO模型

    同步堵塞IO 用户发出请求,堵塞返回 同步非堵塞IO 用户发出请求,客户端再次发送请求等待返回 异步堵塞(多路复用...

  • 【CFX】堵塞面积的处理方法(CFX)

    终于基本搞明白了堵塞系数的处理方法,记录一下基本步骤是:定义密流梯度→确定堵塞边界→计算堵塞面积→计算堵塞系数 定...

网友评论

      本文标题:关于CSS堵塞和JS堵塞

      本文链接:https://www.haomeiwen.com/subject/lujqqrtx.html