网页的渲染机制

2017-05-13  本文已影响0人  柚丶稚橙熟时

渲染机制概述

解析 HTML 标签, 构建 DOM 树
解析 CSS 标签, 构建 CSSOM 树
把 DOM 和 CSSOM 组合成 渲染树 (render tree)
在渲染树的基础上进行布局, 计算每个节点的几何结构
把每个节点绘制到屏幕上 (painting)

过程分析

拿到HTML代码后,浏览器开始解析HTML代码构建DOM树。
这个过程是根据代码自上而下的。
当解析到style 或者 link外链css时,会阻塞停止HTML的解析,DOM树的构建。
等请求下载解析css并且CSSOM构建完毕时,才会继续解析后面的HTML代码。


当继续解析到script 或者 外链js脚本时,会阻塞停止HTML的解析,DOM树的构建。



注意:



然后继续解析HTML。每解析完一个DOM 就结合CSSOM 绘制好(不同浏览器处理方式不同)。
遇到图片src就建立请求获取图片,但是不等待继续解析后面的HTML(异步并行过程),等到图片获取到以后再回头Reflow,如果没有影响布局则Repaint。

(1)Reflow(回流):浏览器要花时间去渲染,当它发现了某个部分发生了变化影响了布局,那就需要倒回去重新渲染。
(2)Repaint(重绘):如果只是改变了某个元素的背景颜色,文字颜色等,不影响元素周围或内部布局的属性,将只会引起浏览器的repaint,重画某一部分。

等到所有标签解析完毕则渲染结束。

提高网页加载速度 和避免异常情况的处理方法

CSS

为了提高网页加载速度,对于首页无关的样式,需要使用适当的方式避免其阻塞初次渲染:




另:css选择器的机制是从右往左,所以应避免过多的选择器嵌套

JS

JS脚本执行会阻塞HTML Parser;
CSS解析会阻塞JS脚本执行:js可能会读、写CSSOM
虽然JS会阻塞HTML Parser解析;但是浏览器的资源异步加载机制Preload会异步加载head标签内的资源

非关键JS资源解析阻塞的优化方案

font

img

图片资源的加载不会阻塞渲染,但是最好在HTML标签中设置图片的高度和宽度,可以在Layout时留出图片渲染的空间,避免页面的抖动

内容参考:https://segmentfault.com/a/1190000008693178?utm_source=weekly&utm_medium=email&utm_campaign=email_weekly

上一篇 下一篇

猜你喜欢

热点阅读