先简单看下HTTP请求的主要过程:DNS解析(T1)-> 建立TCP连接(T2)-> 发送请求(T3)-> 等待服务器返回首字节(TTFB)(T4)-> 接收数据(T5)
从上面请求过程中,可以看出当多个请求时,请求中的DNS解析、建立TCP连接等步骤都会重复执行多遍。那么如果合并N个HTTP请求为1个,理论上则可以节省(N-1)*(T1+T2+T3+T4)的时间。当然实际场景并没有这么理想,比如浏览器会缓存DNS信息,因此不是每次请求都需要DNS解析;
经过研究可以得出结论:当文件体积较小的时候,(网络延迟低的场景下)合并后的文件的加载耗时明显小于加载多个文件的总耗时;
当文件体积较大的时候,合并请求对于加载耗时没有明显的影响,且拆分资源可以提高缓存命中率。但是注意有特殊的场景,由于合并资源后可能导致网络往返次数的增加,当网络延迟很大时,是会增大耗时的(参考 TCP 拥塞控制)。