Как браузеры работают при асинхронной загрузке нескольких частей файла - PullRequest
0 голосов
/ 01 октября 2019

Я разрабатываю и внедряю разделение одного большого файла на небольшие порции для загрузки.

Я пробовал размер порции для 1 МБ, 10 МБ, 100 МБ для загрузки файлов 1 ГБ, 10 ГБ.

Я проверил его в браузере Chrome и не обнаружил конкретной разницы в производительности между различными размерами чанка.

Быстрые вопросы здесь. Если я выберу размер куска как 1 МБ для загрузки 10 ГБ файла. Будет загружено 10 тыс. Блоков. Есть ли какие-либо ограничения для IE, Chrome или Safari для выполнения этой сложной задачи?

Как правило, сколько рабочих / потоков будет использоваться для загрузки одновременно?

Большое спасибо!

for(let chunkIndex=0; chunkIndex< LAST_CHUNK_INDEX ;chunkIndex++) {
    SEND_CHUNK[chunkIndex] // Using axios or xhr for uploading files.
}

1 Ответ

1 голос
/ 01 октября 2019
  1. Я не нашел ни одного официального документа об ограничении номеров кусков в браузерах. Но иногда это может иметь ограничение при использовании какого-либо инструмента для загрузки в определенное место, например .
  2. По поводу принципа работы мы отправляем каждый кусок как отдельный запрос. Я нашел образец файла для загрузки по чанку. И я нашел комментарий, сделанный rizsi , очень полезный:

    Основная причина частичной загрузки состоит в том, что серверу не нужно хранить весь файл в памяти - чтотакже возможно обойти на стороне сервера, когда данные передаются в файл напрямую, вторая причина заключается в том, чтобы возобновить загрузку большого файла в случае обрыва потока TCP.

    Таким образом, мы должны отправлять каждый чанк после предыдущегозакончилЕсли мы отправим все чанки одновременно, сервер затопит сразу все куски, что сделает все это бессмысленным.

...