JS与CSS在页面加载过程中如何阻塞页面的渲染
通常浏览器加载并渲染页面包含如下几部分工作:
(1)请求HTML资源
(2)解析HTML生成DOM树
(3)遇到JS则去下载,并执行
(4)遇到CSS则去下载,并解析CSS文件生成CSSOM
(5)根据DOM树和CSSOM生成渲染树让GPU渲染
对于整个过程中,JS与CSS会对其有如下影响:
(1)JS会阻塞DOM树的解析过程,一旦遇到JS脚本,则终止DOM树解析,去下载JS脚本,之后立即执行JS(如果是内嵌JS,则无需下载直接执行),最后继续DOM树解析
(2)CSS并不会阻塞DOM树的解析过程,遇到CSS文件,网络进程会下载CSS文件,不影响DOM树的解析,但会阻塞页面的渲染。(这里DOM树解析!=渲染)
(3)CSS虽然不会直接阻塞DOM树的解析过程,但如果在执行JS脚本前,之前的CSS文件还没有加载完成,则会等待其加载完成后才执行JS,所以如果有 在