美文网首页
浏览器的渲染过程

浏览器的渲染过程

作者: 枫丶筱 | 来源:发表于2018-08-06 10:41 被阅读15次

浏览器的渲染过程

  1. Create/Update DOM And request css/image/js:浏览器请求到HTML代码后,在生成DOM的最开始阶段(应该是 Bytes → characters 后),并行发起css、图片、js的请求,无论他们是否在HEAD里。
    注意:发起 js 文件的下载 request 并不需要 DOM 处理到那个 script 节点,比如:简单的正则匹配就能做到这一点,虽然实际上并不一定是通过正则:)。这是很多人在理解渲染机制的时候存在的误区。
  1. Create/Update Render CSSOM:CSS文件下载完成,开始构建CSSOM
  1. Create/Update Render Tree:所有CSS文件下载完成,CSSOM构建结束后,和 DOM 一起生成 Render Tree。
  1. Layout:有了Render Tree,浏览器已经能知道网页中有哪些节点、各个节点的CSS定义以及他们的从属关系。下一步操作称之为Layout,顾名思义就是计算出每个节点在屏幕中的位置。
  1. Painting:Layout后,浏览器已经知道了哪些节点要显示(which nodes are visible)、每个节点的CSS属性是什么(their computed styles)、每个节点在屏幕中的位置是哪里(geometry)。就进入了最后一步:Painting,按照算出来的规则,通过显卡,把内容画到屏幕上。

以上五个步骤前3个步骤之所有使用 “Create/Update” 是因为DOM、CSSOM、Render Tree都可能在第一次Painting后又被更新多次,比如JS修改了DOM或者CSS属性。

Layout 和 Painting 也会被重复执行,除了DOM、CSSOM更新的原因外,图片下载完成后也需要调用Layout 和 Painting来更新网页。

JavaScript 在 DOM、CSSOM 和 JavaScript 执行之间引入了大量新的依赖关系,从而可能导致浏览器在处理以及在屏幕上渲染网页时出现大幅延迟:

  • JavaScript 执行要等到 CSSOM 就绪
  • 当浏览器遇到一个 script 标记时(没有defer 或 async),DOM 构建将暂停,直至脚本完成执行。所以脚本在文档中的位置很重要。

async/defer 异步加载不会阻塞DOM构建

  • async在加载完成后(http请求完成)立刻执行,无法保证执行顺序
  • defer的执行要在所有元素解析完成后,DOMContentLoaded事件之前完成,defer也不一定按照顺序执行,有风险

相关文章

  • JS浏览器渲染原理(JS引擎)

    1、浏览器渲染过程 浏览器的渲染过程共分为几个过程:JavaScript ——> Style ——> Layout...

  • 浏览器渲染页面过程

    浏览器渲染页面过程 1. 构建DOM和CSSOM树 浏览器渲染页面前需要构建DOM和CSSOM树 浏览器解析过程大...

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

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

  • 网页的渲染机制

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

  • 网页的渲染机制

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

  • JS基础知识储备(回流与重绘及优化策略)

    1、浏览器渲染过程 从上面这个图上,我们可以看到,浏览器渲染过程如下: 解析HTML,生成DOM树,解析CSS,生...

  • 浏览器渲染浅析

    1.浏览器渲染主要流程 不同的浏览器内核不同,所以不同浏览器的渲染过程也不太一样。这里我们看下WebKit 的渲染...

  • css知识总结

    一、浏览器渲染原理 要了解浏览器渲染页面的过程,首先得知道一个名词——关键渲染路径。关键渲染路径是指浏览器从最初接...

  • 浏览器渲染原理与过程

    浏览器如何渲染网页 要了解浏览器渲染页面的过程,首先得知道一个名词——关键渲染路径。关键渲染路径是指浏览器从最初接...

  • 浏览器渲染原理与过程【转】

    浏览器如何渲染网页 要了解浏览器渲染页面的过程,首先得知道一个名词——关键渲染路径。关键渲染路径是指浏览器从最初接...

网友评论

      本文标题:浏览器的渲染过程

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