http请求
当在浏览器中输入地址至获取服务器的相应,总共经历了以下四个步骤:
DNS解析
在向浏览器输入一个网站时,如www.qq.com,浏览器最终访问的是一个ip地址,也就是说www.qq.com与一个ip存在映射的关系,此时DNS起到了桥接2种关系的功能,在下次访问相同网址时,会先从本地浏览器寻找DNS的缓存,如果不存在,则一级一级向上找。
三次握手
在正式发送请求之前,需要建立客户端与服务器的链接。
RTT
RTT(Round-Trip Time): 往返时延。在计算机网络中它是一个重要的性能指标,表示从发送端发送数据开始,到发送端收到来自接收端的确认(接收端收到数据后便立即发送确认),总共经历的时延。
TCP/UDP区别
与TCP不同,UDP并不关心对放接受请求的状态,是一种基于无连接的处理方式,这样的特点是省去握手,速度更快,但是是无序的,也会有丢包的安全隐患。
TCP慢启动
为了不给网络造成拥堵,减缓网络压力。在首次进行tcp请求时,会限制客户端与服务器交互的数据量的上限,首次为14kb左右,之后以一个指数型成长。
网络性能优化
挺高访问效率,目前的主要方法有:
DNS预解析
<meta http-equiv="x-dns-prefetch-control" content="on" />
<link rel="dns-prefetch" href="http://bdimg.share.baidu.com" />
<link rel="dns-prefetch" href="http://nsclick.baidu.com" />
谷歌和火狐支持,不推荐在多个页面使用dns-prefetch。通过预加载一些域名,提前去做DNS解析,加快响应速度。
域名收敛
由服务器统一汇总不同的域名,由再对访问进行转发。
资源内联
由于每个资源首次访问都存在握手等RTT损耗,越少数量的资源请求,可以节约获取资源的时间,例如一个html中src访问一个css,就不如,将这个css直接以style集成在html当中,会减少访问。(webpack等一些构建工具,也可以将html与css当到一个文件当中。)
服务器渲染
传统的方式显示一个页面会发送多次请求,第一次拿到html资源,然后通过请求,再去拿数据,再将数据渲染到页面上。这样的多次请求,会增加页面的响应时间,如果在服务器端,就将页面渲染好,再发送至客户端,也可以间接减少RTT。即(react等框架的SSR)
图片懒加载
指代在可视区请求图片资源。不赘述了。
HTTP2
http2 的改进主要有:
1.由纯文本分割改为二进制编码。
2.首部压缩,以增量的方式进行数据交互,不重复发送一些不变的信息头。
3.多路复用,服务端推送。
本文详细介绍了HTTP请求的全过程,包括DNS解析、三次握手、RTT以及TCP/UDP的区别,同时探讨了TCP慢启动机制。在网络性能优化方面,提到了DNS预解析、域名收敛、资源内联、服务器渲染和图片懒加载等方法。最后,讨论了HTTP2的改进,如二进制编码、首部压缩和多路复用,以提升网络性能。

231

被折叠的 条评论
为什么被折叠?



