许多下载管理器都喜欢this , this和this支持通过多个并行连接下载文件,每个线程一个。这个概念是每个连接将分别下载文件的一部分。
例如,如果有 5 个连接,那么第一个连接将下载文件的前 0-20% 部分,第二个连接将下载 20-40% 部分,依此类推。
同样,在服务器端,将有 5 个线程,其中一个线程将并行读取 20% 的文件。
但是,我认为尝试使用多个线程同时读取单个文件实际上会使下载速度明显变慢,因为机械磁盘的读取头将不得不比以前进行更多的寻道。
即使我们假设磁盘控制器队列机制足够智能,可以在一次顺序读取中将所有 5 个多部分请求批处理到一个文件中,但与仅在一个线程中执行读取然后服务于仅通过 1 个 http 连接提交文件。
那么如何更快地并行下载文件呢?