2015-11-30 4 views
1

Скажите, что у меня есть рой slow серверов. Как и многие из них, как я хочу, так что в принципе я могу предложить огромную общую пропускную способность. Однако, когда пользователь хочет загрузить файл, если я просто выберите один из моих серверов в качестве источника для загрузки, загрузка займет много времени.Загрузка файла из нескольких источников с помощью HTML и JS

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

Я открыт для любого решения, которое не требует особых прав от пользователей (т. Е. Никаких расширений или плагинов для защиты), и это возможно как кросс-браузер. Я также не очень доволен очень маленькими пределами загрузки. Javascript определенно является вариантом.

Я думал, что могу использовать javascript для загрузки файлов в куски, а затем объединить их в blob и сделать загрузку пользователя блобом. Однако это означает, что мои файлы могут быть размером с blob, т. Е. 500 МБ в Chrome, немного больше в нескольких других браузерах. Так мало. Существуют ли другие решения? Существуют ли библиотеки js, которые я могу использовать?

+0

Это чисто клиентское решение, которое вы ищете или владеете серверами? Если вы это делаете, это частичное владение, как в GoDaddy или Azure Web, или это полное владение, такое как виртуальная машина или серверный ящик в вашем здании? – TheHansinator

+0

Да, у меня есть полное владение всеми серверами. У меня есть полный корневой доступ ко всем из них. –

+0

И браузер не обязательно должен иметь возможность отображать файл - его можно перенаправить непосредственно в папку «Загрузки», например, что происходит, когда браузер не может отобразить файл? – TheHansinator

ответ

0

Использование Network Address Translation.

Это возможность, которая может быть установлена ​​на маршрутизаторах, которые позволяют всем серверам регистрироваться на один и тот же IP-адрес - по существу, маршрутизатор подключен к общему адресному пространству с одним адресом, и все ваши серверы подключены к нему. Затем отдельные запросы могут быть перенаправлены маршрутизатором на любой сервер, который не имеет ничего лучшего (отслеживается в маршрутизаторе), а затем перенаправляется обратно на запрашивающий компьютер.

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

Что касается больших файлов, HTTP поддерживает chunked transfer, позволяя загружать файл или веб-страницу в несколько небольших кусков. Несколько серверов могут добровольно отправлять разные куски, что позволяет вам параллелизировать загрузку больших страниц.

+0

Подождите, у меня есть доступ ко всем из них, но я не могу поставить их все за один и тот же ip: ip предоставляется для каждого из них, и все они отличаются. –

Смежные вопросы