性能优化-网络优化

187 阅读4分钟

网络优化

开启h2

二进制编码

http超文本传输协议,那诞生出一个问题?为什么要带文本二字,我们都知道http是应用层协议,那最终都会到物理层形成高低电平。

那为什么还带文本二字呢?其实这里是与一个计算机网络的知识点有关,涉及osi七层模型的一个分层结构,每一层有特定的功能,在数据传输的时候忽略下一层,意思就是垂直忽略,只关心水平方向。简单来说就是应用层到应用层。

所以就能解答为什么是超文本,其实就是我们传输的是文本,h2之前的报文是字符按照特定规则形成。所以就能解答h2为什么是二进制编码,因为h2的报文是二进制的。

优点

前者有很多问题,首先是文本编码会有多余的字符,这样会使报本体积大,其次是如果是文本编码就不能实现信道复用。

后者采用二进制编码就能很好的解决这些问题点。

信道复用

信道复用就是指我们可以在同一个tcp连接当中并行的发送多个请求。那这里就会提出一个问题:为什么h2能实现信道复用而h2之前不能。

为什么h2能实现信道复用

这里其实和报本的编码方式有关。

h1.1采用文本编码,对应的信息按照换行来区分,那么服务接收的时候只能一个字符一个字符读取不能中断,在并行请求当中有多个报文,那么就不知道现在读取的数据属于哪个请求。

H2采用二进制编码,这里有一个帧的概念,二进制的长度单位,二进制->帧->流,信道可以存在多个流,而服务读取帧的时候能知道帧属于哪个流。

serve push

这个应用场景不多,之前有写总结描述:juejin.cn/post/701857…

请求头信息压缩

h1.1没有对应的请求头信息压缩算法,所以导致请求头信息体积增加,而h2采用了对应的算法对请求头进行压缩。

dns解析

dns解析其实就是把域名解析成ip,域名只是一个别名。

我们先看看dns解析的过程:

image.png

这个过程还是很耗时间的,那么这里我们怎么去优化?我们可以通过dns-prefetech dns预解析,或者建立对应的域名解析站点。

域名收敛

域名收敛对应就是域名发散,早期浏览器会对同一个域名的资源并行请求次数进行限制,而为了解决这个限制我们会把资源放在不同域名的服务器上,但是解除限制的同时也增加了dns解析的总时间。

h2就没有此问题,所以我们要进行域名收敛。

cdn物理加速

cdn堪称物理层加速,首先我么要说说什么事cdn。

cdn是什么

cdn是内容分发网络,我们可以下面这张图:

image.png

cdn由源站和分布在各地的边缘集群构成,当我们发起请求的时候,会向最靠近我们的服务器发起请求。从而实现杠杠的物理加速。

cdn相关

回源周期

回源周期其实就是指缓存过期时间。当缓存过期后都会去源站拉取最新的资源。

强制刷新

这个是cdn服务商提供的功能,可以使边缘集群重新拉取最新资源进行缓存。

缓存击穿

提供x-cache这个字段我们能判别是否命中cdn缓存。

cdn预热

这个也是cdn服务商提供的功能,cdn预热其实就是主动让边缘集群从源站拉取资源进行缓存,一般对于一些大型活动来说,这个也是经常用的一个网路优化方式。

网络压缩

网络压缩其实就是通过对应的传输算法,减小资源在网络传输中体积,减小时间效果。

主要分为两种:gzip和brotil,从现在网上公布的各项数据后者比前者好。

写在最后

一篇碎碎念文章,写在悠闲的一天,窗外的阳光格外舒适。