美文网首页
CSS JS放置位置与前端性能的关系

CSS JS放置位置与前端性能的关系

作者: 吃兔土吃藕丑 | 来源:发表于2017-12-18 14:18 被阅读0次


首先,我们需要了解加载网页时浏览器都做了哪些工作:

1.浏览器从服务器接收到html代码,然后开始解析html;

2.构建DOM树(根据html代码自顶向下进行构建),并且在同时构建渲染树;

3.遇到js文件加载执行,将阻塞DOM树的构建;遇到css文件,将阻塞渲染树的构建。

(script标签中的defer属性:构建DOM树的过程和js文件的加载异步(并行)进行,但是js文件执行需要在DOM树构建完成之后

script标签中的async属性:构建DOM树、渲染树的过程和js文件的加载和执行异步(并行)进行)

为什么说CSS、JS放置的位置会影响前端性能呢?

从以上过程可以知道,当js文件放在head中时,浏览器构建DOM树的进程遇到js文件加载会阻塞,也就是说,浏览器不会加载body中的标签,一旦这个js文件的数量和内容都比较大,就可能会出现页面一片空白,几秒钟后才一下子加载出来的情况。这对用户来说无疑是一种非常糟糕的体验。

关于JS代码和CSS代码的位置,有三个值得注意的点:

1.JS 有可能会修改 DOM。例如可能会有document.write。这意味着,在当前 JS 加载和执行完成前,后续所有资源的下载有可能是没必要的。这是 JS 阻塞后续资源下载的根本原因。

2.JS 的执行有可能依赖最新样式。比如,可能会有var width = $('#id').width()。这意味着,JS 代码在执行前,浏览器必须保证在此 JS 之前的所有 css(无论外链还是内嵌)都已下载和解析完成。这是 CSS 阻塞后续 JS 执行的根本原因。

3.现代浏览器很聪明,会进行 prefetch优化。性能是如此重要,现代浏览器在竞争中,在 UI update 线程之外,还会开启另一个线程,对后续JS和CSS提前下载(注意,仅提前下载,并不执行)。有了prefetch优化,这意味着,在不存在任何阻塞的情况下,理论上JS和CSS的下载时机都非常优先,和位置无关。(更多关于前端性能优化的知识,点击这里

那应该放在哪里?

1. script标签最好放在body结束标签</body>的前面,这样就不会出现加载网页时出现空白的情况,同时还会降低代码的出错率。

2. css标签应该放在head标签<head></head>之间,因为如果放在body中,那么当DOM树构建完成了,渲染树才构建,那么当渲染树构建完成,浏览器不得不再重新渲染整个页面。如果放在<head></head>之间,浏览器边构建边渲染,效率要高的多。

相关文章

  • CSS JS放置位置与前端性能的关系

    首先,我们需要了解加载网页时浏览器都做了哪些工作: 1.浏览器从服务器接收到html代码,然后开始解析html; ...

  • JS相关概念

    CSS和JS在网页中的放置位置是怎样的? CSS和JS可以放置在页面的任何位置,但是为了避免一些问题,一般将CSS...

  • 饥人谷任务班TASK16(进阶1)

    CSS和JS在网页中的放置顺序是怎样的? CSS可以放置在页面的任何位置,CSS最好放置在HTML代码顶部的 标签...

  • getability---one

    1:css和js在网页中的放置位置? css样式放在head中;js放置在body标签内的最后(防止阻塞后面内容的...

  • 使用gulp构建ES6项目

    项目结构 项目主目录app:前端工程目录css:css目录js:js目录class:class目录,用于放置类in...

  • CSS与JS在网页中的放置位置

    css和js的正确摆放均是为了提高页面的加载效率。 css的放置位置 css应该放置在head中,用style标签...

  • 认识JS网页渲染

    1. CSS和JS在网页中的放置顺序 CSS和JS可以放置在页面上的任意位置,但为了解决白屏和无样式闪烁问题,推荐...

  • JS相关概念

    1.CSS和JS在网页中的放置顺序是怎样的? css放置与 处,JS放置在 的末尾 2.解释白屏和FOUC 白屏:...

  • JS基础(一)

    css和js的放置位置、白屏和FOUC、async和defer、简述网页的渲染机制、 一、CSS和JS在网页中的放...

  • JS 语法

    1. CSS和JS在网页中的放置顺序是怎样的? 理论上来说,CSS和JS的放置位置并没有严格要求,不过因为浏览器的...

网友评论

      本文标题:CSS JS放置位置与前端性能的关系

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