Ответ 1
В Chrome Chrome, по-видимому, ограничены 500 Мбайт и в настоящее время хранятся в памяти, хотя выполняется редизайн:
https://code.google.com/p/chromium/issues/detail?id=375297
Другие версии браузера имеют несколько разные пределы:
Я пытаюсь загрузить файл с помощью вызова AJAX. Мне нужно использовать вызов AJAX, потому что мне нужно сделать почтовый запрос вместе с тем, что мне нужно отправить некоторые заголовки с клиента. Поскольку API Сервера не находится под нашим контролем, у нас нет другого выбора, кроме использования AJAX. Чтобы показать диалог сохранения файла, я преобразовываю массив байтов в blob в URL-адрес объекта, как показано ниже.
var oReq = new XMLHttpRequest();
oReq.open("POST","api/operations/zip", true);
oReq.responseType = "arraybuffer";
oReq.onload = function(oEvent) {
var blob=new Blob([oReq.response], {type: 'application/octet-binary'});
var link=document.createElement('a');
link.href=window.URL.createObjectURL(blob);
link.download="myFileName.zip"; link.click();
}
oReq.send(filePaths);
Теперь я хотел бы знать, существует ли ограничение на размер блока, который мы можем использовать в JavaScript, кроме ограничения памяти браузера. например, можно загрузить файл размером 4 ГБ, если у меня около 8 ГБ ОЗУ.
В Chrome Chrome, по-видимому, ограничены 500 Мбайт и в настоящее время хранятся в памяти, хотя выполняется редизайн:
https://code.google.com/p/chromium/issues/detail?id=375297
Другие версии браузера имеют несколько разные пределы:
Существующий ответ выглядит в значительной степени устаревшим.
Согласно Структура системы хранения Chrome Blob:
Ограничения хранения Blob
Мы вычисляем пределы хранения здесь.
Ограничение хранения в памяти
- Если архитектура x64 и не ChromeOS или Android:
2GB
- В противном случае:
total_physical_memory / 5
Предел хранения диска
- Если ChromeOS:
disk_size / 2
- Если Android:
disk_size / 20
- Else:
disk_size / 10
Примечание. Хромосовый диск является частью пользовательского раздела, который отделен от системного раздела.
Минимальная доступность диска
Мы ограничиваем ограничение на использование диска минимальным дисковым доступом. Используемое уравнение:
min_disk_availability = in_memory_limit * 2
Пределы примера
(Все размеры в ГБ)
Device | Ram | In-Memory Limit | Disk | Disk Limit | Min Disk Availability ----------------+-----+-----------------+------+------------+---------------------- Cast | 0.5 | 0.1 | 0 | 0 | 0 Android Minimal | 0.5 | 0.1 | 8 | 0.4 | 0.2 Android Fat | 2 | 0.4 | 32 | 1.5 | 0.8 CrOS | 2 | 0.4 | 8 | 4 | 0.8 Desktop 32 | 3 | 0.6 | 500 | 50 | 1.2 Desktop 64 | 4 | 2 | 500 | 50 | 4
Чтобы уточнить, disk_size
- это, по-видимому, общий размер диска, а не доступное дисковое пространство (я понятия не имею, почему, похоже, это вызовет проблемы).
Chrome использует каталог с именем blob_storage
в каталоге профиля Chrome для хранения деталей на блоке.
Я не уверен, что и как применяются некоторые другие ограничения, если доступное дисковое пространство или доступная оперативная память меньше ограничений программного обеспечения. Я обновлю этот ответ, когда узнаю больше.
То же, что и Chrome, поскольку он основан на Chromium.
Отсутствует очевидный жесткий предел. Я могу создать Blob значительно больше, чем претензии "800 MiB" FileSaver.js. Он не использует дисковое пространство для возврата больших блоков, поэтому все это происходит в памяти, потенциально с памятью подкачки операционной системы на диск. Это означает, что могут быть возможны капли, большие, чем память, хотя и с плохой производительностью.
Отсутствует очевидный жесткий предел. Он не использует дисковое пространство для возврата больших блоков, поэтому все это происходит в памяти, потенциально с памятью подкачки операционной системы на диск. Это означает, что могут быть возможны капли, большие, чем память, хотя и с плохой производительностью.
Другие ограничения браузера будут добавлены по мере их изучения.