首先说一下前提,我们这里说的下载,是指断点下载的方式,不是一次性下载完毕
字节缓存
对于频繁读取的数据,要加载到内存中进行复用
如果每次都重新从硬盘读取到内存,效率会很低,甚至会严重影响程序性能
连接数限制
要根据服务端的宽带大小,和客户的平均宽带配置,确定一个连接数上限
如果连接数过大,多个连接之间竞争宽带资源,很有可能导致,所有连接都不稳定的情况
此时就可能陷入,所有连接速度慢,并且经常断开,经常重连的恶性循环之中
公平分配带宽
比如有一个土豪用户,他使用的万兆宽带
那么如果他要下载一个大文件,一个人就会占用服务器的全部带宽资源
其它的服务接口,和其它的用户,都将无法正常使用服务
因此要保证穷用户和富用户之间的公平性
此时有两种方式可以选择,一种是限制每个连接的下载速度,一种是限制每个连接的数据下载量
直接限制下载速度的方法,相对比较死板,就算只有一个用户在下载也会限速,这就浪费了服务器的宽带能力
限制每个连接数据下载量的做法,则是当每个连接的下载总量达到一定数值时,就将其断开
此时如果该用户还想继续下载,就得重新创建连接,而连接数是有上限的,此时就要和其它用户竞争连接权利
这样就将带宽竞争,一定程度上转为了连接权竞争,限制了土豪用户的独裁权力,更加公平