网页出现前,大家在忙什么?
按下回车后,浏览器先要找到地址,再与服务器建立通信,把“我想要这个页面”的请求送过去。
服务器返回内容,浏览器还要理解文字结构、安排样式和位置,才能画到屏幕上。有些事情可以一边接收一边做,有些必须等前一步完成。
网页加载是许多环节的接力。 本片把它们依次展开,方便看清职责;真实加载常有重叠,也可能借用已保存的内容节省等待。
为什么第二次打开常常更快?
- 先运行一次,再打开缓存重来,看看少了哪段等待。
- 增加来回传送的延迟,比较多次往返怎样积累时间。
- 加入一次丢失,观察可靠传送怎样补回缺失,也多花了多少等待。
几个容易混在一起的概念
进一步操作与数值核对
先运行一次冷启动,再打开 DNS 缓存重新运行。比较少了哪段等待。然后复用已建立的连接:这时不必再次完成相同的 TCP 与 TLS 建立过程。
最后选择资源缓存仍然新鲜。浏览器可以从本地使用这些响应,根本不必重新传输同一份内容。注意,“缓存中有文件”不总等于“可以不联系服务器”;过期响应可能需要验证。这里特意选的是仍然新鲜的缓存情形。
把网络往返时延 RTT 调到 300 ms,再重复比较。即使要传输的字节不多,多次往返也会累计成明显的等待。减少往返数量和减少传输量,是两条不同的优化路径。
勾选一次分段丢失,看看可靠传输如何付出额外时间来修补缺失。可靠的含义不是“永远不丢”,而是能发现并处理丢失。
想核对技术细节?
在地址栏按下回车后,浏览器首先需要知道去哪里。域名便于人记忆,但通信需要网络地址。DNS 解析把名字连接到地址;如果已有可用缓存,这一步会很快。
接下来,浏览器与服务器建立传输通道。本实验选择 HTTP/2 over TCP 与 TLS 1.3 作为例子:TCP 建立可靠连接,TLS 让双方协商加密并验证服务器身份,HTTP 请求再通过这条通道表达“我要什么”。
服务器处理请求并返回内容。收到 HTML 也不是终点:浏览器还要理解页面结构、样式和布局,最终把结果绘制并合成到屏幕上。真实页面常常边接收边处理,不必等所有内容齐全才开始。
动画把流程依次展开,是为了让你看清它们的职责。现实中的加载更像多人接力与并行协作,而不是一条始终严格串行的队伍。
展开:带宽、延迟与渲染速度
带宽描述单位时间能运送多少数据,延迟描述一次信息往返花多久。像一条很宽但很长的公路:它可以同时运很多货,却不一定让第一辆车立刻抵达。
页面还会受到服务器处理时间、资源数量、脚本执行和设备渲染能力影响。这里用固定的处理与绘制时间,突出往返等待与缓存的作用。所有读数都是教学模型的结果,并非对当前网站或网络进行测速。
展开:HTTP/2 与 HTTP/3 有什么不同?
HTTP/2 可以在一条连接中承载多个流,但底层 TCP 的按序交付仍可能让丢失影响后续数据的交付。HTTP/3 基于 QUIC,在连接建立和流级传输行为上有不同设计,不能直接套用这个串行时间表。
DNS 也可能走加密传输,连接可能提前建立,TLS 会话可以恢复。协议细节很丰富;本实验先给每项职责一个清楚的位置,再由资料链接继续展开。