网页打开的那一秒发生了什么:从输入网址到看见页面
在浏览器地址栏里输入一个网址、按下回车,页面看起来是立刻出现的。但实际上,在这一秒钟里,浏览器和远方的服务器已经完成了一连串配合:找地址、建连接、要数据、画页面,任何一步慢了,你都会感觉到卡顿。
第一步是找地址。你输入的是一串好记的名字,比如某个网站的域名,而电脑真正要连接的是一串数字地址。浏览器会先问域名系统,也就是 DNS:这个名字对应哪台服务器?这个答案可能已经缓存在电脑或网络服务商那里,问得快;如果没有缓存,就要一层一层向上查询,多花一点时间。
找到地址之后,第二步是建立连接。浏览器先和服务器打通一条可靠的通道,再完成一次加密握手,商量好后面通信用的加密方式。这一步做完,双方说话的内容在传输过程中就不再是明文,别人即使截获也难以直接看懂。连接建得越远、往返次数越多,等待感就越明显。
连接建好,浏览器才会正式发出请求:我要这个页面的内容,有时还会带上自己已经保存的缓存信息和身份凭证。服务器收到请求后去准备数据,可能是现成的文件,也可能是现算出来的页面,再把结果连同状态码一起发回来。状态码就是服务器的简短答复,比如成功、没找到、服务器出错。
拿到数据后,浏览器的工作才刚刚开始。它先解析页面的结构文档,一边下载一边搭建页面的骨架;再根据样式表决定每个元素长什么样、放在哪里;最后把文字、图片和颜色画到屏幕上。这个过程叫渲染,页面不是一次性整体出现的,而是先出骨架、再补样式和图片,所以你有时会先看到文字、后看到图片。
页面里的脚本程序也在这个过程中运行。有的脚本负责让按钮可以点击、让菜单可以展开,有的则会再去服务器要更多数据,比如评论列表或推荐内容。如果某个脚本迟迟拿不到数据,或者写得太重,页面就可能出现能看却点不动、或者滚动起来一顿一顿的情况。
为了让下一次打开更快,浏览器还会把一部分东西留下来,这就是缓存。图片、样式表这些不常变的文件,下次可以直接用本地的版本,不用重新下载。但缓存也可能过期:如果网站已经更新,浏览器却还拿着旧版本,就会出现页面显示不正常的情况,这时刷新或清除缓存往往就能解决。
所以,网页打不开或打开很慢,未必是某一方单独的问题。可能是找地址慢了,可能是连接握手多花了往返时间,可能是服务器准备数据慢,也可能是页面本身太重、脚本太多。理解这条链路的好处是,遇到问题时可以一步一步缩小范围,而不是只凭感觉反复刷新。
- 点赞
- 收藏
- 关注作者
评论(0)