http请求过程及性能优化分析

本文详细介绍了HTTP请求的全过程,包括DNS解析、三次握手、RTT以及TCP/UDP的区别,同时探讨了TCP慢启动机制。在网络性能优化方面,提到了DNS预解析、域名收敛、资源内联、服务器渲染和图片懒加载等方法。最后,讨论了HTTP2的改进,如二进制编码、首部压缩和多路复用,以提升网络性能。

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.多路复用,服务端推送。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值