Загрузка по протоколу HTTP против FTP
Я создаю большой веб-сайт, на котором участникам будет разрешено загружать контент (изображения, видео) размером до 20 МБ (может быть, немного меньше 15 МБ, мы еще не определились с окончательным лимитом загрузки, но он будет где-то между 10-25 МБ).
Мой вопрос в том, должен ли я в этом случае использовать HTTP или FTP-загрузку. Имейте в виду, что 80-90 % загрузок будут иметь меньший размер, например, 1-3 МБ, но время от времени некоторые участники также захотят загружать большие файлы (10 МБ+).
Является HTTP загрузка достаточно надежна для таких больших файлов или мне следует использовать FTP? Есть ли заметная разница в скорости между HTTP и FTP при загрузке файлов?
Я спрашиваю, потому что я использую Zend Framework, у которого уже есть HTTP-адаптер для загрузки файлов, в случае, если я выберу FTP, мне придется написать для него свой собственный адаптер.
Спасибо!
7 answers
HTTP определенно налагает меньшую нагрузку на ваших клиентов. Во многих местах есть прокси-серверы или брандмауэры, которые блокируют весь FTP-трафик (входящий или исходящий).
Большим преимуществом HTTP является то, что он проходит через брандмауэры, и его очень легко зашифровать - просто используйте HTTPS на порту 443 вместо HTTP на порту 80. Оба проходят через прокси-серверы и брандмауэры. И в наши дни довольно легко загружать файлы размером 20 МБ по протоколу HTTP/HTTPS, используя СООБЩЕНИЕ.
Проблема с HTTP заключается в том, что он не перезапускается для загрузки. Если вы получите 80 % отправленного файла, а затем произойдет сбой, вам нужно будет перезапустить в начале. Вот почему поставщики все чаще использование загрузчиков и загрузчиков на основе flash, java или javascript. Эти системы могут видеть, какая часть файла была отправлена, отправлять MAC, чтобы убедиться, что он прибыл правильно, и повторно отправлять недостающие части.
MAC важнее, чем вы думаете. Контрольные суммы TCP составляют всего 32 бита, поэтому вероятность того, что ошибка не будет обнаружена, составляет 1 к 4 миллиардам. Это потенциально часто случается с современным Интернетом.
Достаточно ли надежна загрузка HTTP для таких больших файлов
Одним из основных преимуществ FTP является возможность возобновления прерванных загрузок. Большинство FTP-серверов и клиентов поддерживают эту функцию, хотя она не всегда активирована. В то время как с HTTP теоретически возможно использовать специальные заголовки, но обычный клиент (т.Е. Браузер) не будет поддерживать его.
Еще одним преимуществом будет массовая загрузка: очень просто в FTP, не так в HTTP.
Но почему бы просто не предложить оба варианта? HTTP для тех, кто стоит за прокси-серверами или не хочет/не может использовать FTP-клиент, и FTP для людей, которым приходится загружать много или большие загрузки по ненадежным соединениям.
Я не хочу быть саркастичным, но протокол передачи файлов должен быть более надежным при передаче файлов:)
Доступность/использование ресурсов - это скорее проблема, чем надежность или скорость. Каждая загрузка потребляет ресурсы - поток/память/и т.д. - на вашем веб-сервере в течение всего времени загрузки. Если трафик загрузки контента значителен для больших файлов, было бы лучше использовать FTP просто для того, чтобы освободить ваш HTTP-сервер, чтобы он лучше реагировал на запросы страниц.
Я определенно выбираю подход HTTP, как и остальные присутствующие здесь люди. Причина этого в том, что вы сказали о большинстве файлов размером от одного до трех мегабайт.
Проблема заключается в "отдыхе", поэтому:
Рассматривали ли вы возможность разрешить пользователям отправлять файлы большего размера по электронной почте сценарию deamon, который получает электронные письма и загружает их в учетную запись, связанную с отправителем? Или есть решение загрузчика flash, в facebook-подобном подход.
FTP будет потреблять меньшую пропускную способность, чем HTTP, поскольку последнему потребуется кодировать (base64) двоичное содержимое в обычный текст, тем самым увеличивая общий размер передачи. (на 1/3).
Однако потребление пропускной способности может не обязательно быть главной проблемой по сравнению с другими факторами, такими как удобство использования и безопасность, в которых преобладает HTTP.