HTML parser与CSS parser在页面渲染过程中是否并行工作?
HTML解析器与CSS解析器的工作并行性说明
你的认知有一定合理性,但并不完全符合浏览器的实际调度逻辑,具体可以分场景判断:
- 二者确实都隶属于GUI渲染线程,当两个解析器都需要占用渲染线程执行计算任务时,只能串行执行。但浏览器做了大量调度优化,很多场景下二者的工作可以并行推进:
- HTML解析器启动工作的同时,浏览器的预加载扫描器会提前识别HTML中的外链CSS、JS等资源,异步发起网络请求。HTML解析器不会等待CSS资源返回,会继续向下解析剩余HTML内容,CSS资源返回后CSS解析器启动解析工作,这个阶段HTML解析和CSS的拉取、解析是并行的,不会互相阻塞。
- 只有当HTML解析器已经处理到
<body>内需要渲染的DOM节点,而CSSOM树还未构建完成时,浏览器才会暂停HTML解析工作,等待CSS解析器完成CSSOM构建后再恢复执行,此时二者是串行状态。
- 如果是写在标签style属性里的行内CSS,CSS解析器会在HTML解析器处理到对应属性时同步执行解析,这个场景下二者也是串行工作的。
内容的提问来源于stack exchange,提问作者Chor
相关产品推荐
相关产品推荐

