Appearance
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
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