从浏览器地址栏输入url到请求返回发生了什么?其中哪些环节可以进行性能优化?
总结:当用户在浏览器地址栏输入 URL 并按下回车,一场跨越网络和计算机内部的复杂协作便拉开了序幕。这个过程是前端知识体系的全面体现。
旅程始于 DNS 查询,浏览器需要将用户输入的域名(如 google.com)解析为服务器的IP 地址。这个过程会依次查询浏览器缓存、系统缓存、路由器缓存,直至向 DNS 服务器发起请求。拿到 IP 地址后,浏览器会通过三次握手与服务器建立一条可靠的TCP 连接。如果网站是 HTTPS 的,还需要在此之上进行一次 TLS 握手,以建立加密信道。连接建立后,浏览器便可以发送 HTTP 请求报文,服务器接收到请求后,进行外理,可能涉及数据库查询,业务逻辑计算等,然后返回一个 HTTP 响应报文,其中包含了状态码(如 200 0K )和响应体(通常是 HTML 内容)。浏览器接收到 HTML 后,渲染引擎开始工作,进入关键渲染路径。它会解析 HTML 构建 DOM,解析 CSS 构建CSSOM。在解析过程中,如果遇到其他资源引用(如 JS、图片、字体文件),浏览器会为这些资源再次发起 HTTP 请求。这些后续请求可能会复用已建立的 TCP 连接(得益于 HTTP 持久连接或 HTTP/2 的多路复用),从而提高效率。最终,页面被渲染出来,并在后续的“水合”过程中绑定交互事件。几乎每个环节都存在优化空间:DNS 预解析、TCP 预连接、利用 CDN 加速内容分发、启用 HTTP/2 或 HTTP/3、对资源进行压缩和缓存、优化关键渲染路径等等,这些共同决定了最终的用户体验。
详细分析1. URL 解析