2010-05-03 67 views
1

我正在構建需要通過HTTP和FTP進行大量文件傳輸的軟件。很多時候,我使用pget等多連接下載加速器(如axel或lftp)獲得更快的HTTP下載。爲什麼HTTP通過wget傳輸比lftp/pget快?

axel http://example.com/somefile 

lftp -e 'pget -n 5 http://example.com/somefile;quit' 

主場迎戰剛剛使用wget:使用像在某些情況下,我已經看到了2倍,3倍更快的文件傳輸

wget http://example.com/somefile 

但其他時候, wget比lftp快得多。

lftp -e 'pget -n 1 http://example.com/somefile;quit' 

據我所知,通過多個連接下載文件時不會總是導致加速,這取決於帶寬限制如何:Strangly,甚至當我使用get LFTP,像這樣,這甚至真的。但是:爲什麼它會變慢?尤其是在使用-n 1調用lftp/pget時?

+0

這應該可能在http://superuser.com – 2010-05-03 21:39:58

+0

您的軟件不應該在命令行中進行脫殼。使用捲曲,它爲大多數主要語言提供了包裝。 – 2010-05-03 21:42:01

+1

@Byron Whitlock - 出於好奇,爲什麼不呢?我經常發現使用子進程而不是向我的應用程序添加一堆庫代碼會更好。它有益處以及缺陷恕我直言。 – Mic 2010-05-03 21:58:42

回答

1

HTTP服務器可能使用gzip壓縮數據流嗎?我不記得wget是否處理gzip Content Encoding。如果是這樣,那麼這可能解釋性能提升。另一種可能性是管道中有一處HTTP緩存。你可以嘗試類似

wget --no-cache --header="Accept-Encoding: identity" 

並將其與基於FTP的傳輸時間進行比較。

+0

更不用說像內容分發網絡,QOS路由(特別是與非被動ftp相關),代理緩存...... – symcbean 2010-05-05 13:15:56