기본적으로 확인해야 할 이미지 링크가 857 개 있습니다. 3 가지 방법으로 구현하고 각각 3 번 실행합니다.Typhoeus gem 응답 시간을 단축하지 않습니다
방법 1 : Typhoeus 히드라 사용 (병렬 요청)
hydra = Typhoeus::Hydra.new(:max_concurrency => 50)
st = Time.now
@image_urls.each do |image_url|
request = Typhoeus::Request.new(image_url)
hydra.queue(request)
end
hydra.run
et = Time.now
puts "\n" + (et - st).to_s() + " seconds"
시간 촬영 : 117.65, 99.45, 102.01 초
방법 2 : 사용 Typhoeus (단수 요청)
st = Time.now
@image_urls.each do |image_url|
response = Typhoeus::Request.head(image_url)
end
et = Time.now
puts "\n" + (et - st).to_s() + " seconds"
촬영 시간 : 33.85, 31.89, 30.18 초
방법 3 : 사용 시간 촬영
st = Time.now
@image_urls.each do |image_url|
url = URI.parse(image_url)
req = Net::HTTP.new(url.host, url.port)
res = req.request_head(url.path).code
end
et = Time.now
puts "\n" + (et - st).to_s() + " seconds"
순 :: HTTP 루비 라이브러리 : 83.30, 67.62, 75.26 초
처음생각 방법 1 : Typhoeus와 히드라는에 생각한다 한 번에 하나씩 보내는 대신 병렬 요청을 보내 Http 응답 시간을 단축하십시오. 그러나 위의 결과는 실제로 응답 시간이 느려짐을 보여줍니다.
헤더에 대한 HTTP 요청이 일반적인 http GET 요청보다 적은 오버 헤드를 가질 수있는 한 가지 이유가 있습니다. 그 외에 내가 여기서 뭔가 잘못하고있는거야? 이 프로세스를 최적화하는 데 도움이 필요하면 http 상태 코드를 검색하면됩니다.