Skip to content

输入 URL 到页面展示

全链路串讲:DNS → TCP → TLS → HTTP → 渲染。

Updated View as Markdown
For humans

输入 URL 到页面展示

面试经典串讲题:把前面所有知识点串成一条链路。答题框架:网络层 + 浏览器层两段,从输入 URL 到页面渲染。

完整链路

URL 到页面: 网络五步 + 渲染五步

网络段(答题重点)

步骤 要点
1. URL 解析 协议、域名、端口、路径
2. DNS 缓存 → 递归/迭代查询(见 DNS 篇)
3. TCP 握手 三次握手建立连接(见握手篇)
4. TLS HTTPS 时:证书验证 + 密钥协商(见 TLS 篇)
5. HTTP 请求 请求行/头/体,带 Cookie

优化点:DNS 预解析、连接复用(keep-alive)、HTTP/2 多路复用(减少连接数)。

渲染段

步骤 要点
6. 响应处理 状态码、Content-Type、缓存策略(304/缓存命中)
7. 解析 HTML 构建 DOM 树 + CSSOM 树
8. 子资源加载 脚本阻塞解析(defer/async)、CSS 阻塞渲染
9. 渲染 布局(Layout)→ 绘制(Paint)→ 合成(Composite)
10. 交互 事件循环、JS 执行

优化视角(加分)

  • 关键渲染路径:减少阻塞(脚本放底部/defer、CSS 合并、内联关键 CSS)
  • 资源加载:CDN(见 CDN 篇)、压缩、缓存(强缓存/协商缓存)
  • 网络:HTTP/2 多路复用、连接复用、DNS 预解析
  • 面试话术:分网络和渲染两段讲,每段给一个优化点,展示系统性

面试追问

  1. 整体流程? 解析 URL → DNS → TCP 握手 → TLS → HTTP 请求 → 响应 → 解析渲染 → 交互
  2. 哪个环节最慢? 通常 DNS + 握手 + 响应体下载。优化:缓存、复用连接、CDN
  3. 脚本为什么阻塞? 解析到 script 要下载执行完才继续(可能改 DOM)。defer/async 解决
  4. 强缓存和协商缓存? 强缓存(Cache-Control)不发请求直接用;协商缓存(304)发请求确认没变
  5. 渲染阻塞的因素? 阻塞脚本、大 CSS、同步请求。关键渲染路径优化
Navigation

Type to search…

↑↓ navigate↵ selectEsc close