Skip to content

Parallelize downloading objects #62

@krisis

Description

@krisis

[ 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:

  1. Perform a HEAD request on the object to retrieve its size and ETag.
  2. Choose a suitable split-size, and make a list of range headers to be used in subsequent requests.
  3. 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.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions