从输入url到页面出现到底发生了什么?

17 阅读2分钟

一、URL 解析

在浏览器地址栏输入 URL 后,浏览器会先解析 URL,拆分出:

  • 协议(http / https)
  • 域名
  • 端口号
  • 路径
  • 查询参数

二、DNS 解析

浏览器需要将域名解析为 IP 地址,查询顺序一般为:

  1. 浏览器 DNS 缓存
  2. 系统缓存(如 hosts 文件)
  3. 本地 DNS 服务器
  4. 递归查询根服务器、权威 DNS 服务器

最终获得服务器的真实 IP 地址。


三、建立连接(TCP / TLS)

拿到 IP 后,客户端与服务端开始建立连接。

1️⃣ TCP 三次握手
  • 客户端发送 SYN,请求建立连接
  • 服务端返回 SYN + ACK,表示同意
  • 客户端返回 ACK,连接建立完成
2️⃣ TLS 握手(HTTPS)
  • ClientHello:客户端发送支持的加密算法等信息
  • ServerHello:服务端返回数字证书(包含公钥)
  • 客户端校验证书合法性(CA、有效期、域名)
  • 客户端生成对称密钥,用服务端公钥加密并发送
  • 双方确认后,使用对称加密进行后续通信

四、HTTP 请求与缓存

浏览器发起 HTTP 请求前会进行缓存判断:

  • 命中强缓存:直接使用本地资源,不发请求
  • 未命中:向服务器发起请求,可能返回协商缓存或新数据

五、服务器处理请求并返回响应

服务器处理业务逻辑,返回 HTML、CSS、JS 等资源。


六、浏览器解析与渲染(前端重点)

  1. 解析 HTML,构建 DOM 树

  2. 解析 CSS,构建 CSSOM

    • CSS 不阻塞 DOM 解析
    • CSS 会阻塞渲染(Render Tree 的生成)
  3. 处理 JavaScript

    • 普通 script:阻塞 DOM 解析
    • defer:并行下载,DOM 解析完成后执行
    • async:并行下载,下载完成立即执行
  4. DOM + CSSOM → Render Tree

  5. Layout(回流):计算元素位置和尺寸

  6. Paint(重绘):绘制像素

  7. Composite(合成):在需要时由 GPU 合成图层并显示到页面