최대한 빨리 작은 페이지를 많이 다운로드해야합니다. 한 페이지의 평균 크기는 3kb입니다. 수백만 페이지가 있습니다. 첫째, 나는 시도했다. curl
하지만 서버가 요청에 응답하기를 기다리고 있었기 때문에 아마 느려졌습니다. 그런 다음 다음 페이지에 대해 동일한 프로세스를 실행하십시오.
curl -O "http://website.com/pages/[0000001-1000000].html"
편집 : 몇 가지 테스트를 한 후에, 나는이 결과를 관찰했다. 나는 항상 더 많은 제안에 열려 있습니다. 나는 속도를 더 향상시키고 싶다.
비교 1 : (dns 대 DNS 없음)
느린 :
curl -O "http://website.com/pages/[1-1000].html" -s -S
더 빠름 :
curl -O "http://90.111.123.222/pages/[1-1000].html" -s -S
작은 페이지를 많이 다운로드 할 때 DNS 지연이 중요합니다.
비교 2 : (컬 시퀀스 대 "연속"사용)
느린 :
curl -O "http://90.111.123.222/pages/{1}.html" -s -S ::: $(seq 1 1000)
더 빠름 :
curl -O "http://90.111.123.222/pages/[1-1000].html" -s -S
비교 3 : (병렬 실행)
느린 :
time parallel -j 5 curl -O \'"http://90.111.123.222/pages/{1}.html"\'
-S -s ::: $(seq 1 1000)
더 빠름 :
( time curl -O "http://90.111.123.222/pages/[1-200].html" -s -S &
time curl -O "http://90.111.123.222/pages/[201-400].html" -s -S &
time curl -O "http://90.111.123.222/pages/[401-600].html" -s -S &
time curl -O "http://90.111.123.222/pages/[601-800].html" -s -S &
time curl -O "http://90.111.123.222/pages/[801-1000].html" -s -S & )
Btw, 분명히 더 많은 인스턴스를 실행하면 두 가지 방법의 속도가 어느 정도 향상됩니다.
컬은 프로토콜을 사용하는 것이 더 느리므로 wget이 다른 옵션이지만, 사용하는 것이 더 빠를지 모르겠다.
—
Francisco Tapia
curl과 wget은 병렬로 실행하지 않는 한 느려질 것입니다. 동시에 여러 범위에서 5 개의 컬 명령을 실행했을 때 총 속도는 4-5 배로 뛰었지만 실용적인 방법은 아니 었습니다.
—
dandidondi