summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Stenberg <daniel@haxx.se>2020-08-04 16:14:41 +0200
committerDaniel Stenberg <daniel@haxx.se>2020-08-04 16:14:41 +0200
commit532dfa3bc0a7f27edf0a9434b32f6fb392e6d7a1 (patch)
treeb663d971c4de271f7add4c56ab8729cf78c0cbea
parent28f22a9524776bdcbbea4c06a1369b0a44e6533e (diff)
downloadcurl-532dfa3bc0a7f27edf0a9434b32f6fb392e6d7a1.tar.gz
TODO: Use multiple parallel transfers for a single download
Closes #5774
-rw-r--r--docs/TODO22
1 files changed, 22 insertions, 0 deletions
diff --git a/docs/TODO b/docs/TODO
index 6158d23bf..bd9b0e883 100644
--- a/docs/TODO
+++ b/docs/TODO
@@ -160,6 +160,7 @@
18.21 retry on the redirected-to URL
18.22 Add flag to specify download directory
18.23 Set the modification date on an uploaded file
+ 18.24 Use multiple parallel transfers for a single download
19. Build
19.1 roffit
@@ -1124,6 +1125,27 @@ that doesn't exist on the server, just like --ftp-create-dirs.
See https://github.com/curl/curl/issues/5768
+18.24 Use multiple parallel transfers for a single download
+
+ To enhance transfer speed, downloading a single URL can be split up into
+ multiple separate range downloads that get combined into a single final
+ result.
+
+ An ideal implementation would not use a specified number of parallel
+ transfers, but curl could:
+ - First start getting the full file as transfer A
+ - If after N seconds have passed and the transfer is expected to continue for
+ M seconds or more, add a new transfer (B) that asks for the second half of
+ A's content (and stop A at the middle).
+ - If splitting up the work improves the transfer rate, it could then be done
+ again. Then again, etc up to a limit.
+
+ This way, if transfer B fails (because Range: isn't supported) it will let
+ transfer A remain the single one. N and M could be set to some sensible
+ defaults.
+
+ See https://github.com/curl/curl/issues/5774
+
19. Build
19.1 roffit