HTTP против FTP загрузки - PullRequest
       32

HTTP против FTP загрузки

13 голосов
/ 06 августа 2009

Я создаю большой веб-сайт, на котором участникам будет разрешено загружать контент (изображения, видео) размером до 20 МБ (возможно, немного меньше, чем 15 МБ, мы еще не установили окончательный лимит загрузки, но он будет где-то между 10-25MB).

Мой вопрос, должен ли я в этом случае использовать HTTP или FTP-загрузку. Имейте в виду, что 80-90% загрузок будет меньшего размера, например, около 1-3 МБ, но время от времени некоторые участники также захотят загружать большие файлы (10 МБ +).

Достаточно ли надежна загрузка по HTTP для таких больших файлов или мне следует использовать FTP? Есть ли заметная разница в скорости между HTTP и FTP при загрузке файлов?

Я спрашиваю, потому что я использую Zend Framework, в котором уже есть HTTP-адаптер для загрузки файлов, и в случае, если я выберу FTP, мне придется написать свой собственный адаптер для него.

Спасибо!

Ответы [ 7 ]

15 голосов
/ 06 августа 2009

HTTP определенно возлагает меньшую нагрузку на ваших клиентов. Во многих местах есть прокси или брандмауэры, которые блокируют весь трафик FTP (входящий или исходящий).

12 голосов
/ 06 августа 2009

Большим преимуществом HTTP является то, что он проходит через брандмауэры и его очень легко шифровать - просто используйте HTTPS на порту 443 вместо HTTP на порту 80. Оба проходят через прокси и брандмауэры. И в наши дни довольно просто загрузить файлы размером 20 МБ по HTTP / HTTPS с помощью POST.

Проблема с HTTP заключается в том, что он не может быть перезапущен для загрузки. Если вы получили 80% отправленного файла, а затем произошла ошибка, вам нужно будет перезагрузить компьютер в начале. Вот почему поставщики все чаще используют загрузчики и загрузчики на основе флэш-памяти, Java или Javascript. Эти системы могут видеть, сколько файла было отправлено, отправить MAC, чтобы убедиться, что он поступил правильно, и повторно отправить отсутствующие части.

MAC важнее, чем вы думаете. Контрольные суммы TCP - только 32 бита, так что есть вероятность 1 из 4 миллиардов ошибок, которые не будут обнаружены. Это потенциально часто случается с сегодняшним интернетом.

7 голосов
/ 06 августа 2009

Достаточно ли надежна загрузка по HTTP для такие большие файлы

Одним из основных преимуществ FTP будет возможность возобновления прерванных загрузок. Большинство FTP-серверов и клиентов поддерживают это, хотя это не всегда активировано. В то время как с HTTP теоретически возможно использование специальных заголовков, но обычный клиент (то есть браузер) не будет его поддерживать.

Другим преимуществом могут быть массовые загрузки: очень просто в FTP, а не в HTTP.

Но почему бы просто не предложить оба варианта? HTTP для тех, кто находится за прокси-сервером или не может / не может использовать FTP-клиент, и FTP для людей, которым приходится загружать много или много раз по ненадежным соединениям.

3 голосов
/ 06 августа 2009

Я не хочу быть саркастичным, но протокол передачи файлов должен быть более надежным при передаче файлов:)

0 голосов
/ 06 августа 2009

Я определенно выбираю HTTP-подход, как и остальные люди здесь. Причина этого в том, что вы сказали, что большинство файлов имеют размер от одного до трех мегабайт.

Проблема для "отдыха", поэтому:

Рассматривали ли вы возможность разрешать пользователям отправлять большие файлы по электронной почте на сценарий deamon, который получает электронные письма и загружает электронные письма в учетную запись, связанную с отправителем? Или есть решение для загрузки флэш-памяти, в стиле фейсбука.

0 голосов
/ 06 августа 2009

FTP будет потреблять меньшую полосу пропускания, чем HTTP, поскольку последнему потребуется кодировать (base64) двоичное содержимое в простой текст, таким образом увеличивая общий размер передачи. (на 1/3).

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

0 голосов
/ 06 августа 2009

Доступность / использование ресурсов - более важная проблема, чем надежность или скорость. Каждая загрузка использует ресурсы - поток / память / и т. Д. - на вашем веб-сервере на время загрузки. Если трафик загрузки контента является значительным для больших файлов, было бы лучше использовать FTP просто для освобождения вашего HTTP-сервера, чтобы он был более отзывчивым на запросы страниц.

...