从输入url到页面加载完成发生了什么

从前端的角度来看,从输入url到页面加载完成发生了什么呢?
总结地来看就是这样几点:

  1. 浏览器的地址栏输入URL并按下回车
  2. 浏览器查找当前URL是否存在缓存,并比较缓存是否过期
  3. DNS解析URL对应的IP
  4. 根据IP地址建立TCP连接
  5. HTTP发起请求
  6. 服务器处理请求,浏览器接收HTTP响应
  7. 构建DOM树,渲染页面
  8. 关闭TCP连接

这个过程中比较核心的部分就是
(1). DNS解析 (2). TCP建立连接+HTTP请求 (3). 浏览器渲染页面 (4)断开连接

1.DNS解析

DNS解析实际上就是一个递归查询的过程,实现的是网址到IP地址的转换。
查找顺序大致是: 本地域名服务器根域名服务器顶级域名服务器权威域名服务器
对应网址的解析过程就是:.->.com ->google.com.->www.google.com.

2. TCP建立连接+HTTP请求

TCP建立连接就是三次握手的过程,客户端:你好,我要请求数据;服务器端:你好,可以;客户端:好的。
三次握手
HTTP请求主要发生在客户端,这部分又可以称为前端工程师眼中的HTTP,发送HTTP请求的过程就是构建HTTP请求报文并通过TCP协议发到服务器指定端口(HTTP协议80/8080,HTTPS协议443)。报文由三部分组成:请求行,请求头,请求实体。

3.浏览器渲染页面

在这里插入图片描述
浏览器渲染过程

  1. 处理HTML标记并构建DOM树
  2. 处理css标记并构建CSSOM树
  3. 将DOM树和CSSOM树合并构建一个渲染树
  4. 渲染树布局,浏览器通过Render Tree计算出每个节点对象在页面的确切大小和位置
  5. 渲染树绘制,浏览器会调用渲染器的paint()方法在屏幕上显示内容

DOMContentLoaded事件触发代表初始的HTML被完全加载和解析,不需要等待CSS,JS,图片加载。

Load事件触发代表页面中的DOM,CSS,JS,图片已经全部加载完毕。

4.断开连接

客户端:我要断开连接了;服务器:收到;服务器:我也要断开连接了;客户端:收到(我会在2倍的报文最大生存时间后断开连接,如果在这个时间内再收到服务器的消息,我就再发送一遍确认信息)。
TCP四次挥手

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值