Resource, CurlDownloadStrategy: Deduplicate the curl HEAD requests
Fixes #5357 * Eliminates getting a new strategy instance via Resource methods * only call resolve_url_basename_time once and store the time result as an instance variable for reuse
This commit is contained in:
parent
4cb61054df
commit
8fddd87472
@ -329,12 +329,14 @@ class CurlDownloadStrategy < AbstractFileDownloadStrategy
|
|||||||
private
|
private
|
||||||
|
|
||||||
def resolved_url_and_basename
|
def resolved_url_and_basename
|
||||||
return @resolved_url_and_basename if defined?(@resolved_url_and_basename)
|
|
||||||
resolved_url, basename, = resolve_url_basename_time(url)
|
resolved_url, basename, = resolve_url_basename_time(url)
|
||||||
@resolved_url_and_basename = [resolved_url, basename]
|
[resolved_url, basename]
|
||||||
end
|
end
|
||||||
|
|
||||||
def resolve_url_basename_time(url)
|
def resolve_url_basename_time(url)
|
||||||
|
@resolved_info_cache ||= {}
|
||||||
|
return @resolved_info_cache[url] if @resolved_info_cache.include?(url)
|
||||||
|
|
||||||
if ENV["HOMEBREW_ARTIFACT_DOMAIN"]
|
if ENV["HOMEBREW_ARTIFACT_DOMAIN"]
|
||||||
url = url.sub(%r{^((ht|f)tps?://)?}, ENV["HOMEBREW_ARTIFACT_DOMAIN"].chomp("/") + "/")
|
url = url.sub(%r{^((ht|f)tps?://)?}, ENV["HOMEBREW_ARTIFACT_DOMAIN"].chomp("/") + "/")
|
||||||
end
|
end
|
||||||
@ -373,7 +375,7 @@ class CurlDownloadStrategy < AbstractFileDownloadStrategy
|
|||||||
|
|
||||||
basename = filenames.last || parse_basename(redirect_url)
|
basename = filenames.last || parse_basename(redirect_url)
|
||||||
|
|
||||||
[redirect_url, basename, time]
|
@resolved_info_cache[url] = [redirect_url, basename, time]
|
||||||
end
|
end
|
||||||
|
|
||||||
def _fetch(url:, resolved_url:)
|
def _fetch(url:, resolved_url:)
|
||||||
|
|||||||
@ -35,7 +35,7 @@ class Resource
|
|||||||
end
|
end
|
||||||
|
|
||||||
def downloader
|
def downloader
|
||||||
download_strategy.new(url, download_name, version,
|
@downloader ||= download_strategy.new(url, download_name, version,
|
||||||
mirrors: mirrors.dup, **specs)
|
mirrors: mirrors.dup, **specs)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user