GitHub 上有一个仓库 what-happens-when,它尝试回答一个古老的面试问题:当你在浏览器中输入 google.com 并按下 Enter 键后会发生什么?
它不再局限于平常的回答,而是更具体详细的解读,不遗漏任何细节。
一个典型的现代浏览器需要经历一系列步骤,从你在地址栏中输入的 URL 到最终在屏幕上看到的页面。它必须经过:
解析 DNS
建立与服务器的 TCP 连接
请求页面上的所有资源(也就是发送 HTTP 请求,服务器处理 HTTP 请求并返回报文)
构建 DOM 和 CSSOM
构建渲染树
执行布局
解码图像
在屏幕上绘制
我们可以将以上步骤分为两个常规阶段:
另外,步骤 4 - 8 是浏览器解析渲染页面的过程。
我不会再这介绍它们每一个步骤都具体做了什么,因为有人 👇 已经做出了总结。
这也是一道经典的面试题。回答时,按上面这些步骤,由浅入深,逐步深入分析。
我整理了一些资源,供大家参考: