返回
探索 URL 输入到页面呈现的幕后
前端
2023-10-01 15:35:40
输入一个 URL 到浏览器地址栏,然后页面奇迹般地出现在您面前。您可能想知道,在这看似瞬间的背后,发生了多少惊人的事件。以下是如何分解从输入 URL 到页面展示的旅程:
1. URL 解析
浏览器从地址栏中获取 URL 并将其分解为各个部分,包括协议、主机名(或域名)和路径。
2. 域名解析
浏览器联系 DNS(域名系统)服务器,将主机名转换为 IP 地址,该 IP 地址是计算机在互联网上的唯一标识符。
3. 建立 TCP 连接
浏览器向目标 Web 服务器建立 TCP(传输控制协议)连接。TCP 确保数据在客户端(您的浏览器)和服务器之间可靠地传输。
4. HTTP 请求
通过 TCP 连接,浏览器向服务器发送 HTTP(超文本传输协议)请求,其中包含有关所需页面的信息。
5. HTTP 响应
服务器处理请求并发送 HTTP 响应,其中包含 HTML、CSS 和 JavaScript 等文件。
6. 渲染进程
浏览器启动一个新的渲染进程,负责将 HTML、CSS 和 JavaScript 转换为可视化的页面。
7. 关键渲染路径
渲染进程按照特定的关键渲染路径工作,首先加载并呈现页面所需的 HTML 和 CSS。
8. DOM 和事件循环
HTML 被解析为 DOM(文档对象模型),JavaScript 被执行,并且浏览器使用事件循环来处理用户交互和异步事件。
9. 呈现
最后,浏览器进程从渲染进程获取渲染结果并将其呈现给您。
技术指南:
- URL 解析: 使用
URL
对象来解析 URL。 - 域名解析: 使用
DNS.lookup()
方法来查找 IP 地址。 - 建立 TCP 连接: 使用
net.Socket
类来建立 TCP 连接。 - HTTP 请求: 使用
http.request()
方法来发送 HTTP 请求。 - HTTP 响应: 使用
http.IncomingMessage
类来处理 HTTP 响应。 - 渲染进程: 使用
electron.BrowserWindow
类来创建渲染进程。 - 关键渲染路径: 使用
webpack
或Rollup
等构建工具来优化关键渲染路径。 - DOM 和事件循环: 使用
document.getElementById()
方法来查找 DOM 元素,并使用addEventListener()
方法来处理事件。 - 呈现: 使用
window.requestAnimationFrame()
方法来呈现页面。