- 浏览器端发送 HTTP 请求流程的完整过程
- 构建请求
- 查找缓存
- 准备 IP 地址和端口
- 等待 TCP 队列
- 建立 TCP 连接
- 发起 HTTP 请求
- 服务器端处理 HTTP 请求流程

-
为什么站点第二次打开速度会很快?
- DNS 缓存:浏览器本地把对应的 IP 和域名关联
- 页面资源缓存:简要流程如下
- 首次访问时,服务器端返回 HTTP 响应头给浏览器,浏览器通过 Cache-Control 字段来设置是否缓存该资源。缓存过期时长 Max-age 参数。
- 再次请求资源,尚未过期,则会直接返回缓存中的资源给浏览器。
- 再次访问资源,已经过期,浏览器会继续发起网络请求,并在 HTTP 请求头上添加 If-None-Match,服务器端收到请求头后,根据 If-None-Match 的值判断请求的资源是否有更新。没有更新则返回 304 状态码;有更新就返回最新的资源给浏览器。
-
登录状态如何保存?
- 浏览器发起登录 POST 请求
- 服务器验证用户登录信息,正确后会生成一段表示用户身份的字符串,并添加到响应头的 Set-Cookie 字段中,返回响应头给到浏览器
- 浏览器接收到响应头,解析后发现存在 Set-Cookie 字段,就会把这个字段信息保存在本地
- 用户再次访问时,浏览器发起 HTTP 请求,并将之前保存的 Cookie 数据写进请求头中的 Cookie 字段里,发送请求头给到服务器
- 服务器接收到带有 Cookie 字段的请求头,根据 Cookie 信息查找到该用户已经是登录状态,生成含有该用户的页面数据,并返回给浏览器
- 浏览器接收到数据后,正确展示用户登录的状态信息