本文仅作为学习记录,非商业用途,侵删,如需转载需作者同意。
资源包括:JavaScript,css,html,图片等。
一、前提了解
用户在浏览器中输入网址,浏览器将用户的请求指向web服务器,发起API接口请求和资源加载。
HTTP在TCP基础上,资源文件最终都会在传输层进行数据传输。
拥塞队列:为了防止一开始把数据全部发送出去,而导致中间路由器短时间内,处理不了过多的突发流量问题,因此发送端根据网络拥塞情况确定了窗口值,其中有个“慢启动”的算法。
在每次收到一个新的报文段的确认后,把拥塞窗口按照2的倍数增长,通过分组注入到网络来确保速率更加合理。
例如:第一次是3,第二次是6,第n次是 (n-1)32
示例:一张100kb的图片,需要传输几次?
文件大小:100*1000b=
1460字节:MSS为1460是由1500-20(IP头)-20(TCP头)计算出的,实际场景下,TCP包头中会带有12字节的选项----时间戳。这样,单个TCP包实际传输的最大量就缩减为1448字节。
PS:MTU 是最大传输单元,以太网1500.
假设拥塞窗口初始是3,最大是 24。第四次传输的时候就达到了最大,第五次不能再增大了。
然后因为文件剩下的不多了,就把剩下的传完就好了。
如果最大拥塞窗口调整到12,那第三次就达到了最大,后面就需要多传几次。
MSS(最大报文段长度:1460字节):相当于是一辆车最多装多少货
拥塞队列:相当于道路上最多能跑几辆车
所以减少拥塞队列的上限,就会增加传输次数,降低网站的性能。
二、提高性能方法
1、缓存
使用nginx,设置静态文件缓存。
2、压缩
nginx的gzip压缩静态文件,来减少传输的文件大小。
3、减少网络时延
使用CDN,减少网络时延,加快访问速度。
总结如图: