渲染进程的内部运作
这是本系列文章的第3部分。之前我们介绍了多进程体系结构和导航流。在本文中,我们将研究渲染进程中发生了什么。
渲染进程涉及Web性能的许多方面。由于渲染进程内部发生了很多事情,因此本文仅是概述。如果您想更深入地研究, the Performance section of Web Fundamentals 提供了更多资源。
渲染进程如何处理Web内容
渲染器进程负责选项卡内部发生的所有事情。在渲染进程中,主线程处理大多数的用户代码。如果您使用了web worker或者service worker,则有时JavaScript的一部分由worker线程处理。合成器和光栅线线程也运行在渲染器进程内部,以便高效,流畅地渲染页面。
渲染进程的核心工作是将HTML,CSS和JavaScript转换为用户可以与之交互的网页。
图1:具有主线程,辅助线程,合成器线程和内部光栅线程的渲染器进程
解析
DOM的构造
当渲染进程收到导航提交的消息和开始接收HTML数据后,主线程开始解析文本串(HTML),使之成为DOM。
DOM是浏览器对页面的内部表示,并且它提供了Web开发人员可以通过JavaScript与之交互的数据结构和API。
HTML标准定义了如何将HTML文档解析为DOM 。您可能已经注意到,将HTML填充到浏览器永远不会引发错误。例如,缺少
加载子资源
一个网站通常使用了很多外部资源,例如图像,CSS和JavaScript。这些文件需要从网络或缓存中加载。主线程可以在解析构建DOM时找到它们时并一个接一个的请求它们,但是为了加快速度,它同时也有运行一个预加载扫描器,通常它会在主线程阻塞的时候,扫描后面的代码,以便提前加载img和link之类的外部资源。
图2:主线程解析HTML并构建DOM树
阻塞型JS
HTML解析器找到