网络带宽是指在单位时间(一般指的是1秒钟)内能传输的数据量。网络和高速公路类似,带宽越大,就类似高速公路的车道越多,其通行能力越强。
在持续的多用户、高并发的情况下,缓解带宽压力可以避免客户端卡顿,提高程序应对高并发的能力。
一、在Http报文中做手脚
1.压缩后再传输
gzip是一种数据压缩格式,通常对前端所需要的静态文件进行压缩,有效减少网络传输的字节数。他先把文本压缩为.gz然后传输给浏览器,最后由浏览器负责解压缩呈现给用户。老版本的浏览器可能不能显示,但是现在大多数浏览器都能显示。
nginx开启zip压缩:https://blog.csdn.net/CharmaineXia/article/details/129242601
2.内容排列顺序优化
gzip对于要压缩的文件,首先使用LZ77算法的一个变种进行压缩,对得到的结果再使用哈夫曼编码(根据情况,使用静态哈弗曼编码或动态哈夫曼编码)的方法进行压缩。
根据gzip的压缩的压缩原理可以知道,重复度越高,压缩比越高,因此可以将字符串和数字内容放在一起摆放。
- LZ77算法
LZ77的核心思路是如果一个串中有两个重复的串,那么只需要知道后面的串与前面串重复的长度和后面串起始字符与前面串起始字符相对于起始位置的距离。
ABCCDEFABCCDEGH
通过LZ77算法可压缩为ABCCDEF(7,6)GH,其中7表示重复串起始字符A到前面串起始字符的距离,6表示重复部分的长度(ABCCDE)。
哈夫曼编码
哈夫曼编码根据字符出现的概率来构造平均长度最短的编码.换句话说如果一个字符在一段文档当中出现的次数多,它的编码就相应的短。
3.简化Respone body的结构
能简则简,要做到既能节省传输的数据量,又使用方便。
下图右边也是内容排列顺序优化后的结果,这样的排序压缩比率高。
二、频率控制
1.带宽控制
通过添加请求间隔参数(下次请求时间),保证客户端的请求频率服务端可控;或设置流控规则,保证服务器资源的申请频率可控。以应对突发的流量增长问题,提供有损的服务。
2.稀疏控制
在访问量稀疏的时间段,弹性的设置用户请求的限制,避免客户端的无效请求。