浏览器渲染原理与阻塞

ppgo8 于 2023-09-29 发布

浏览器渲染原理与阻塞

浏览器多进程架构

浏览器何将HTML渲染到页面上

JavaScript的加载与执行是否会阻塞页面渲染

谷歌浏览器做了很多优化,其中一个优化就是预解析操作。当渲染引擎收到字节流之后,会开启预解析线程,分析HTML文件中包含的JS,CSS文件,解析到相关文件后,预解析线程会提前下载这些文件。会同时发起这些文件的下载请求。这两个文件的下载过程是重叠的,所以总的下载时间等于最长的文件下载时间。不管CSSJS文件谁先到达,都等到CSS文件下载完成并生成CSSOM,然后执行JavaScript脚本。

JS脚本分为不同情况,

以及JS加载执行也会有不同的表现。

注意:不管是JS和加载还是解析,如果阻塞页面渲染,只会影响后续DOM的解析和渲染,并不会影响脚本之前的DOM的解析和渲染。

内联JS

外链JS

前提:停止解析后续DOM不意味着一定会阻塞页面的渲染。

外链JS有加载和执行,同时加载又分为同步加载、异步加载(async/defer)。

同时还要区分外链JS所在的位置,顶部、底部。

CSS的加载与解析是否会阻塞页面渲染

参考文章

浏览器知识点整理(五)多进程架构

是JS的加载阻塞了页面的渲染还是JS的执行阻塞了页面的渲染?

Vue 虚拟 DOM 搞不懂?这篇文章帮你彻底搞定虚拟 DOM

深入剖析:Vue核心之虚拟DOM