Skip to content

14.说说地址栏输⼊ URL 敲下回⻋后发⽣了什么?

1.访问流程概述

  • 用户输入的是关键字还是URL? 如果是关键字则使用默认搜索引擎生成URL。

  • 浏览器首先会对输入的URL进行解析,以确定要访问的网站或资源的地址。浏览器查找当前URL是否存在缓存,如果有缓存、并且缓存未过期,直接从缓存中返回。

  • 查看域名是否已经被解析过了,没有解析过进行DNS解析将域名解析成IP地址,并增加端口号。

  • 利用IP地址进行寻址,请求排队。同一个域名下请求数量不能多余6个。

  • 排队后服务器创建TCP链接 (三次握手)

  • 如果请求是HTTPS,进行SSL协商

  • 利用TCP协议将大文件拆分成数据包进行传输(有序传输),可靠的传输给服务器(丢包重传),服务器收到后按照序号重排数据包 (增加TCP头部,IP头部)

  • 发送HTTP请求(请求行,请求头,请求体)

  • HTTP 1.1中支持keep-alive属性,TCP链接不会立即关闭,后续请求可以省去建立链接时间。

  • 服务器响应结果(响应行,响应头,响应体)

  • 返回状态码为301、302时,浏览器会进行重定向操作。(重新进行导航)

  • 根据响应内容进行页面渲染。(如果依赖其他资源会再次发送请求)

2.Timing

image-20231018103217152

  • Queuing : 请求发送前会根据优先级进行排队,同时每个域名最多处理6个TCP链接,超过的也会进行排队,并且分配磁盘空间时也会消耗一定时间。

  • Stalled :请求发出前的等待时间(处理代理,链接复用)

  • DNS lookup :查找 DNS 的时间

  • initial Connection :建立TCP链接时间

  • SSL : SSL 握手时间( SSL 协商)

  • Request Sent :请求发送时间(可忽略)

  • Waiting ( TTFB ) :等待响应的时间,等待返回首个字符的时间

  • Content Dowloaded :用于下载响应的时间

3.网络优化

  • 减少网站中使用的域名域名越多 , DNS 解析花费的时间越多。

  • 减少网站中的重定向操作,重定向会增加请求数量。

  • 选用高性能的Web服务器 Nginx 代理静态资源 。

  • 资源大小优化:对资源进行压缩、合并(合并可以减少请求,也会产生文件缓存问题), 使用 gzip/br 压缩。

  • 给资源添加强制缓存和协商缓存。

  • 升级 HTTP/1.x 到 HTTP/2

  • 付费、将静态资源迁移至 CDN

Released under the MIT License.