第一阶段:浏览器预处理与缓存机制
在请求发出前,浏览器会执行URL解析与缓存检查,以优化性能。
1. URL 解析与检查
浏览器首先判断输入内容是搜索关键字还是有效URL。若为关键字,则跳转至默认搜索引擎;若为URL,则检查协议(如http或https)。当网站启用HSTS(HTTP Strict Transport Security)时,浏览器会强制将http请求内部重定向为https,无需发送网络请求。
2. 检查缓存(面试关键点)
这是前端性能优化的重要考点。浏览器优先检查强缓存,依据Expires或Cache-Control头字段判断。若命中强缓存,资源直接从内存缓存(Memory Cache)或磁盘缓存(Disk Cache)加载,状态码显示为200 (from memory/disk cache),从而避免网络请求。未命中时,才进入DNS解析阶段。更多关于前端框架与工程化中的缓存策略,可参考相关资源。
第二阶段:DNS解析流程
将域名转换为IP地址的过程称为DNS解析,遵循递归查询顺序:浏览器缓存、系统缓存(如hosts文件)、路由器缓存、ISP DNS缓存,最终从根域名服务器到权威域名服务器。2025年面试中,DNS Prefetch成为补充考点,前端可通过HTML头部的<link rel="dns-prefetch">标签提前解析DNS,减少延迟。深入了解网络协议如TCP/IP和HTTP有助于掌握此环节。
第三阶段:建立TCP/TLS连接
获取IP地址后,客户端与服务器通过TCP三次握手建立连接:SYN(客户端发起)、SYN+ACK(服务端响应)、ACK(客户端确认)。三次握手防止失效请求造成资源浪费。对于HTTPS,还需进行TLS握手以交换密钥和验证证书。HTTP/3(基于QUIC协议)将TCP和TLS握手合并,实现更快连接(0-RTT)。

第四阶段:发送请求与服务器响应
客户端构建HTTP请求(包括请求行、头部和体),发送至服务器。服务器处理请求时,若配置协商缓存(如Etag或Last-Modified),会对比文件指纹。未变化则返回304 Not Modified,客户端使用缓存资源;变化则返回200 OK和新内容。
第五阶段:浏览器解析与渲染
此阶段是前端性能优化的核心领域。
1. 构建对象模型
- DOM树:解析HTML生成,遇到脚本可能阻塞解析。
- CSSOM树:解析CSS计算样式。
2. 生成渲染树(Render Tree)
结合DOM树和CSSOM树,排除如display: none的节点(但visibility: hidden节点会保留)。
3. 布局(Layout/Reflow)
计算节点在屏幕上的精确坐标和大小。回流(Reflow)由尺寸或位置变化触发,成本较高。
4. 绘制(Paint/Repaint)
填充像素颜色和视觉效果。重绘(Repaint)仅改变外观,成本较低。
5. 合成(Composite)
将图层传输到GPU处理并显示。优化技巧包括使用transform和opacity动画,因为它们只触发合成,避免回流和重绘,从而提升性能。这在前端开发中,结合现代前端框架如Vue或React时尤为重要。
第六阶段:断开连接
请求结束后,TCP连接可能通过Keep-Alive保持复用。若需断开,则进行四次挥手(FIN-ACK过程)。
总结
整个过程可分为网络通信和页面渲染两大部分。网络部分聚焦缓存策略(强缓存/协商缓存)和连接优化(如HTTP/2多路复用或HTTP/3 QUIC);渲染部分重点优化关键渲染路径,减少回流,利用GPU加速合成。
|