[ Inspired from https://github.com/minio/minio-go/issues/797]
Downloading an object can be parallelized using multiple GET request with range-headers. This can lead to significant download performance improvement for large files.
The strategy can be as follows:
- Perform a HEAD request on the object to retrieve its size and ETag.
- Choose a suitable split-size, and make a list of range headers to be used in subsequent requests.
- Perform the GET requests with range-headers and write them to appropriate offsets into the on-disk file. In each GET request use the If-Match header and set the ETag retrieved in step 1. This is to make sure that any changes to the object during the download may be detected.
[ Inspired from https://github.com/minio/minio-go/issues/797]
Downloading an object can be parallelized using multiple GET request with range-headers. This can lead to significant download performance improvement for large files.
The strategy can be as follows: