美文网首页
浏览器加载、解析、渲染

浏览器加载、解析、渲染

作者: 阿凯_8b27 | 来源:发表于2019-08-26 10:30 被阅读0次

加载
1.浏览器获取一个html,当浏览器获得一个html文件时,会”自上而下“加载,并在加载过程中进行解析渲染。 

加载过程中遇到外部css文件,浏览器另外发出一个请求,来获取css文件。 

遇到图片资源,浏览器也会另外发出一个请求,来获取图片资源。这是异步请求,并不会影响html文档进行加载。 

但是当文档加载过程中遇到js文件,html文档会挂起渲染(加载解析渲染同步)的线程,不仅要等待文档中js文件加载完毕,还要等待解析执行完毕,才可以恢复html文档的渲染线程。

加载外联js和css的阻塞情况 

一个不太严谨但方便记忆的口诀: JS 全阻塞,CSS 半阻塞

JS 会阻塞后续 DOM 解析以及其它资源(如 CSS,JS 或图片资源)的加载。

CSS不阻塞DOM的加载和解析(它只阻塞DOM的渲染呈现。这里谈加载),不会阻塞其它资源(如图片)的加载,但是会阻塞 后续JS 文件的执行(原因之一是,js执行代码可能会依赖到css样式。css只阻塞执行而不阻塞js的加载)。

鉴于上面的特性,当css后面存在js的时候,css会间接地阻塞js后面资源的加载(css阻塞js,js阻塞其他资源 )。

现代浏览器会进行 prefetch 优化,浏览器在获得 html 文档之后会对页面上引用的资源进行提前下载 

外联js文件使用defer属性和asyn可以达到异步非阻塞加载的效果,由于现代浏览器都存在 prefetch,所以 defer, async 可能并没有太多的用途,可以作为了解扩展知识,仅仅将脚本文件放到 body 底部(但还是在< /body >之前)就可以起到很不错的优化效果(遵循先解析再渲染再执行script这个顺序)。当把js放在最后的时候,其实浏览器将自动忽略< /body >标签,从而自动在最后的最后补上< /body >。

1、浏览器通过请求的 URL 进行域名解析,向服务器发起请求,接收文件(HTML、CSS、JS、Images等等)。

2、HTML 文件加载后,开始构建 DOM Tree(DOM树)

3、CSS 样式文件加载后,开始解析和构建 CSS Rule Tree

4、Javascript 脚本文件加载后, 通过 DOM API 和 CSSOM API 来操作 DOM Tree 和 CSS Rule Tree

Repaint 

当元素改变的时候,将不会影响元素在页面当中的位置(比如 background-color, border-color, visibility),浏览器仅仅会应用新的样式重绘此元素,此过程称为 Repaint。

Reflow 

当元素改变的时候,将会影响文档内容或结构,或元素位置,此过程称为 Reflow。( HTML 使用的是 flow based layout ,也就是流式布局,所以,如果某元件的几何尺寸发生了变化,需要重新布局,也就叫 Reflow。) 

Reflow 的成本比 Repaint 的成本高得多的多。我们应当尽量避免Reflow。

、创建有效的 HTML 和 CSS ,不要忘记指定文档编码,比如 <meta charset="utf-8">

2、CSS 样式应该包含在 < head >中, Javascript 脚本出现在`< body > 末尾。

3、减少 CSS 嵌套层级和选择适当的选择器,可参考 如何提升 CSS 选择器性能。

4、不要通过 JS 逐条修改 DOM 的样式,提前定义好 CSS 的 Class 进行操作。

5、尽量减少将 DOM 节点属性值放在循环当中,会导致大量读写此属性值。

6、尽可能的为产生动画的 HTML 元素使用 fixed 或 absolute 的 position ,那么修改他们的 CSS 是不会 Reflow 的。

相关文章

  • 2020-07-23 18课 CSS动画+浏览器渲染原理

    浏览器渲染原理 渲染机制 浏览器加载HTML代码后解析HTML代码来构建HTML树(DOM) 加载CSS代码后解析...

  • 浏览器加载、解析、渲染

    浏览器加载、解析、渲染的过程是怎么样的? Why 为什么要了解浏览器加载、解析、渲染这个过程? 1.了解浏览器如何...

  • css文件、js文件加载与浏览器渲染

    做个简单总结,如下: css文件加载不阻塞dom解析,但阻塞dom渲染,dom解析&css加载同时完成,浏览器才会...

  • 网页的渲染机制

    网页的渲染机制 参考文章:ScriptJava——了解HTML页面的渲染过程浏览器加载,解析,渲染的过程HTML渲...

  • 网页的渲染机制

    网页的渲染机制 参考文章:ScriptJava——了解HTML页面的渲染过程浏览器加载,解析,渲染的过程HTML渲...

  • 浏览器加载、解析、渲染

    加载1.浏览器获取一个html,当浏览器获得一个html文件时,会”自上而下“加载,并在加载过程中进行解析渲染。 ...

  • 浏览器渲染过程

    参考:浏览器加载、解析、渲染的过程 解析:1. 浏览器会将HTML解析成一个DOM树,DOM 树的构建过程是一个深...

  • 珍爱网笔试总结

    load和DOMContentLoad的区别 浏览器渲染页面DOM文档加载的步骤:1.解析HTML结构。2.加载外...

  • 浏览器渲染机制 /CSS控制多行省略号

    前端HTML浏览器渲染顺序,HTML代码自上而下进行解析加载。 先解析head标签中的代码。遇到script时,浏...

  • 详解Vue如何提取Critical Css

    什么是Critical Css 首屏关键css网页渲染时,浏览器解析只有在完成 部分 CSS 样式的加载、解析...

网友评论

      本文标题:浏览器加载、解析、渲染

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