浏览器渲染一个网页的过程

参考原文: 网站性能优化—CRP

一个普通的页面,里面包含一些文本和一张图片,浏览器是如何处理这个页面的呢?

第一步:构建DOM树

<html>
  <head>
    <meta name="viewport" content="width=device-width,initial-scale=1">
    <link href="style.css" rel="stylesheet">
    <title>Critical Path</title>
  </head>
  <body>
    <p>Hello <span>web performance</span> students!</p>
    <div><img src="awesome-photo.jpg"></div>
  </body>
</html>
image.png
  • 转换:浏览器从磁盘或网络读取HTML的原始字节,然后根据指定的文件编码格式(例如 UTF-8)将其转换为相应字符
  • 令牌化:浏览器把字符转化成W3C HTML5 标准指定的各种确切的令牌,比如"<html>"、"<body>"以及其他在尖括号内的字符串。每个令牌都有特殊的含义以及它自己的一套规则
  • 词法分析:生成的令牌转化为对象,这个对象定义了它们的属性及规则
  • DOM构建:最后,由于HTML标记定义了不同标签之间的关系(某些标签嵌套在其他标签中),创建的对象在树状的数据结构中互相链接,树状数据结构也捕获了原始标签定义的父子关系:HTML对象是body对象的父对象,body是p对象的父对象等等


    image.png

DOM树捕获了文档标记的属性及关系

第二步:CSS对象模型(CSSOM)

当浏览器构建上述网页DOM的时候,在head里面碰到一个link标签,这个标签引用了一个外部的CSS样式表:style.css。浏览器预测会需要这个资源来渲染页面,因此会立即发出一个该资源的请求。

与HTML一样,我们需要将收到的 CSS 规则转换为浏览器可以理解、能够处理的东西。


image.png

第三步:构建渲染树

将 DOM 树和 CSSOM 树融合成渲染树。

第四步:布局

根据渲染树进行布局,计算每个节点的几何信息

它精确地捕获了每个元素在视口中的准确位置及尺寸大小:所有相对度量单位都被转换为屏幕上的绝对像素。

第五步:绘制

相当于画画的最后一步,画笔,颜料都准备好了,画布的布局怎么画都构思好了,最后一步就是一气呵成画出来。

我们已经知道了哪些节点是可见的以及它们的计算样式和几何信息,然后我们就可以把这些信息传送到最后一个阶段,即把渲染树中的每一个节点都转化到屏幕上实际的像素点。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容