在浏览器中输入URL后,执行的全部过程
1. DNS解析
将域名地址解析为 IP 地址。解析过程如下:
- 检查浏览器 DNS 缓存。
- 检查系统 DNS 缓存(host文件,中保留了一些以前访问过的网站的域名和IP的数据)。
- 检查路由器 DNS 缓存。
- 查询 ISP DNS 缓存。ISP:互联网服务提供商。
- 递归查询。从根域名服务器到顶级域名服务器再到极限域名服务器依次搜索对应目标域名的IP。
2. TCP 三次握手
3. 浏览器向服务器发送 HTTP 请求
4. 浏览器接收服务器的响应
5. 断开 TCP 连接(四次握手)
6. 浏览器渲染页面
页面渲染过程如下:
- 根据 HTML 构建 DOM 树。
- 根据 CSS 构建 CSSOM(CSS 对象模型:包含DOM和CSS规则)。
- 根据 DOM 树和 CSS Rule Tree 构建 rendering tree(渲染树)。
- 更据渲染树绘制每个节点。最终完成浏览器页面的渲染。
DOM 和 CSSOM 的构建是异步进行的,遇到 JS 文件后,会终止DOM 和 CSSOM 的构建,这就是为什么将 js 文件放在 HTML 最后的原因。
JS 会阻塞UI线程的执行,是因为 JS 能控制 UI 的展示,而页面加载的规则是要顺序执行,所以在碰到 JS 代码时候 UI 线程会首先执行它