美文网首页
关于link和script是否阻塞页面的总结

关于link和script是否阻塞页面的总结

作者: cb12hx | 来源:发表于2018-03-27 23:14 被阅读0次

    按照我们以前的理解,link不阻塞页面,script阻塞页面,这里需要细化一下

    1.link

    它并不会阻塞dom tree的生成,但是会阻塞paint(也有可能是render tree),个人理解,应该是link阻止了css tree,从而导致paint延迟
    @import
    这个理解为只有引用它的css下载结束之后再去下载,应该是不能并行下载,从而导致阻止paint的问题,并不会阻塞dom tree的生成


    image.png

    如果在页面中有一个script标签,里面哪怕一句代码都没有,但是却导致了link文件阻塞了,给script标签设置async都不行


    image.png

    代码如下

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
    
    <head>
      <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
      <title>Document</title>
      <link href="./test.css" rel="stylesheet" />
      <link href="https://cdn.mdn.mozilla.net/static/build/styles/home.c101c7eba059.css" rel="stylesheet" />
    </head>
    
    <body>
      <div class="test">1</div>
      <div class="test column-callout">2</div>
    
      <script type="text/javascript">
      //document.querySelector('.test').style.background = 'green'
      </script>
      <div class="test">3</div>
    </body>
    
    </html>
    

    删除这段之后,阻塞消失

      <script type="text/javascript">
      //document.querySelector('.test').style.background = 'green'
      </script>
    

    2.script

    这个标签肯定是会阻塞dom解析的,假如浏览器遇到它,会下载它并执行里面的内容,才去继续解析下面的dom,解决办法有两个,一是在script标签上加上async,一是使用createElement动态创建script

    相关文章

      网友评论

          本文标题:关于link和script是否阻塞页面的总结

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