浏览器内部到底怎么工作?带你一步步看懂网页加载与渲染的流程
假如我们妄图弄清楚浏览器的工作流程,首先应具备一个基础的认知,浏览器事实上是一种形同“翻译器”以及“执行者”的事物,乃是把代码转化成用户可以看见、能够交互的页面的,此过程与多个核心板块共同展开工作,自发出请求起始直至最终完成渲染,每一步骤皆是经过精心谋划的,其目的在于确保网页能够快速、精确地呈现在我们眼前 。
用户在地址栏输入网址后发生了什么
最开始,当你在地址栏按下回车键时,之后浏览器就开启一场复杂的“外交活动”,它会先去解析你输入的网址,然后再向负责该网址的DNS服务器发起查询,从而获取目标网站服务器实际的IP地址,紧跟着地是,浏览器会运用HTTP或者HTTPS协议,与这个IP地址建立网络连接,并且向服务器发送一个“请求”。这个请求就像一张订单,告诉服务器:“我需要某个特定网页的所有材料” 。先是服务器收到“订单”,之后它会把造就那个网页的HTML文档、样式表、相关图片等各类文件全都整齐妥善地整理好,完了将这些文件封装成“响应”数据包,再发送回去给浏览器 。
浏览器如何构建网页的骨架与样式
收到服务器回返的HTML文档,而后浏览器的渲染引擎着手忙碌起来。它先是进行“解析”,将HTML代码转化成一种被称作DOM(文档对象模型)的树状架构,该树体现了网页的完整层级还有内容结构。与此同时,它也解析CSS代码,生成另一棵名为CSSOM(CSS对象模型)的树,此树规定了每个DOM节点应如何显示。随后,渲染引擎会把DOM树和CSSOM树合并成一棵“渲染树”。这个过程会剔除那些不可见的元素,比如<head>设置了 display: block 的节点,只留下确实要绘制在屏幕之上的内容,以及与它相关的样式信息,标签或者设置了 display: none` 的节点被排除在外 ,。
渲染树如何一步步变成我们看到的页面
在渲染树生成完毕之后,布局阶段紧接着就启动了,浏览器会针对渲染树内的每个节点,去计算其在屏幕上的确切位置以及大小,而这个过程又被称作“重排”,随后便步入“绘制”阶段,在此阶段浏览器会针对布局计算好的每个节点,将其转化成屏幕上的实际像素,并且填充包括颜色、边框、阴影等在内的视觉细节。现代浏览器为了提升效率,常常会将页面划分成多个图层,并且一些复杂的视觉效果,比如像3D变换那样的效果,会被提升到单独的图层进行处理,之后由合成线程把所有这些组成的各个图层合成为一幅完整的图像,并且最终显示在你的屏幕之上,这个从解析一直到合成的管线必须要高效地运转,不管是其中任何一步被阻塞都有可能会致使页面加载的速度变慢。
当你在日常浏览网页的时候,有没有遇到过页面加载异常缓慢或者部分内容显示出现错乱的情况呢?根据你的经验,你认为最常见的问题一般在上述流程的哪个环节发生呢?欢迎在评论区分享你的观察以及想法,要是觉得本文对你有帮助的话,也请点赞给予支持。
