2009-08-06 14 views
13

Ich baue eine große Website, auf der Mitglieder Inhalte (Bilder, Videos) hochladen können, die bis zu 20MB groß sind (vielleicht ein bisschen weniger wie 15MB), wir haben uns noch nicht auf ein endgültiges Uploadlimit festgelegt aber es wird irgendwo zwischen 10-25MB sein).HTTP vs. FTP Upload

Meine Frage ist, sollte ich in diesem Fall mit HTTP oder FTP-Upload gehen. Denken Sie daran, dass 80-90% der Uploads eine kleinere Größe haben werden wie cca 1-3MB, aber von Zeit zu Zeit werden einige Mitglieder auch große Dateien hochladen wollen (10MB +).

Ist HTTP-Upload für so große Dateien zuverlässig genug oder sollte ich mit FTP gehen? Gibt es beim Upload von Dateien einen merklichen Geschwindigkeitsunterschied zwischen HTTP und FTP?

Ich frage, weil ich Zend Framework verwende, das bereits HTTP-Adapter für Datei-Uploads hat, falls ich FTP wähle, müsste ich meinen eigenen Adapter dafür schreiben.

Danke!

Antwort

15

HTTP belastet Ihre Kunden definitiv weniger. Viele Orte haben Proxies oder Firewalls, die den gesamten FTP-Verkehr blockieren (rein oder raus).

+3

Es gibt eine Reihe von technischen Gründen, FTP über HTTP zu verwenden, aber ich denke, Benutzerfreundlichkeit trumpelt sie alle. –

3

ich wanto nicht sarkastisch zu sein, aber File Transfer Protocol muss zuverlässiger auf File-Transfer :)

+13

Es ist nicht. Es ist nur älter. – vy32

0

Ressourcenverfügbarkeit/Nutzung ist eher ein Problem als Zuverlässigkeit oder Geschwindigkeit. Jeder Upload verbraucht Ressourcen - Thread/Speicher/etc - auf Ihrem Webserver für die Dauer des Uploads. Wenn der Upload-Datenverkehr für große Dateien erheblich ist, wäre es besser, FTP einfach zu verwenden, um Ihren HTTP-Server zu befreien, um auf Seitenanforderungen besser reagieren zu können.

+0

Es müsste immer noch auf demselben Rechner laufen, so dass es keinen automatischen Vorteil geben würde, wenn die spezifische FTP-Implementierung nicht effizienter/performanter ist als ein HTTP-Upload in diesem spezifischen HTTP-Server. Oder wenn Sie eine Art von gemeinsam genutzten Speicher verwenden, können Sie auch einen separaten dedizierten Upload-HTTP-Server haben, also keinen Grund, das eine oder das andere zu bevorzugen. –

+0

Warum glauben Sie, dass diese auf der gleichen Maschine laufen müssten? – ScottTx

+0

Vermutlich muss der HTTP-Server auf die hochgeladenen Dateien zugreifen. –

7

Ist HTTP zuverlässig genug für so große Dateien

Ein wesentlicher Vorteil der FTP-Upload wäre die Fähigkeit, abgebrochene Uploads fortzusetzen. Die meisten FTP-Server und -Clients unterstützen dies, obwohl es nicht immer aktiviert ist. Während mit HTTP, ist es theoretisch möglich, spezielle Header, aber ein normaler Client (d. H. Browser) wird es nicht unterstützen.

Ein weiterer Vorteil wäre Bulk-Uploads: sehr einfach in FTP, nicht so in HTTP.

Aber warum nicht einfach beide Optionen anbieten? HTTP für diejenigen, die hinter Proxies stehen oder einen FTP-Client nicht verwenden können/und FTP für Leute, die viele oder große Uploads über unzuverlässige Verbindungen hochladen müssen.

+1

FTP-Uploads würden nicht mit einem FPT-Client durchgeführt werden. Es würde durch Web-Browser in PHP-Code erfolgen. Das einzige Problem ist, dass ich meine eigene Adapterklasse für FTP-Uploads schreiben müsste (weil Zend Framework derzeit nur HTTP unterstützt), was einige Zeit in Anspruch nehmen würde und ich einen Termin habe. –

+1

Ich sehe nicht, wie die Implementierung des Serverteils etwas damit zu tun hat, welcher Client benutzt wird. Webbrowser unterstützen FTP-Upload nicht unbedingt (Firefox nicht, obwohl ich denke, dass es ein Addon gibt). Wenn Sie jedoch keinen vorhandenen FTP-Server verwenden können, ist es keine gute Idee, ihn selbst zu implementieren. –

12

Der große Vorteil von HTTP ist, dass es über Firewalls geht und es ist sehr einfach zu verschlüsseln --- verwenden Sie einfach HTTPS auf Port 443 statt HTTP auf Port 80. Beide gehen durch Proxies und Firewalls. Und heutzutage ist es ziemlich einfach, 20 MB Dateien über HTTP/HTTPS mit einem POST hochzuladen.

Das Problem mit HTTP ist, dass es für Uploads nicht neu gestartet werden kann. Wenn 80% der Datei gesendet werden und dann ein Fehler auftritt, müssen Sie zu Beginn neu starten. Aus diesem Grund verwenden Anbieter zunehmend Flash-basierte, Java-basierte oder Javascript-basierte Uploader und Downloader. Diese Systeme können sehen, wie viel von der Datei gesendet wurde, eine MAC senden, um sicherzustellen, dass sie ordnungsgemäß angekommen ist, und die fehlenden Teile erneut senden.

Ein MAC ist wichtiger als Sie vielleicht denken. TCP-Prüfsummen sind nur 32 Bit. Es besteht also die Chance von 1 zu 4 Milliarden, dass ein Fehler nicht erkannt wird. Das passiert sehr viel mit dem heutigen Internet.

+0

Es ist wahr, dass HTTP-POSTs nicht neu gestartet werden können, aber Flash und Javascript können keine HTTP-PUTs mit Dateien wie Java ausführen. –

+0

Ja, und meine Antwort besagt, dass Anbieter zunehmend Flash- und Java-basierte Uploader verwenden, da sie neu gestartet werden können. – vy32

+0

Ist Port 433 nicht typischer HTTPS statt 437? –

-5

FTP wird weniger Bandbreite als HTTP verbrauchen, da letztere (base64) den binären Inhalt in Klartext codieren muss, um die Gesamtübertragungsgröße zu erhöhen. (um 1/3).

Der Bandbreitenverbrauch ist jedoch nicht unbedingt das Hauptproblem, verglichen mit anderen Faktoren wie Benutzerfreundlichkeit und Sicherheit, bei denen HTTP vorherrscht.

+5

was? base64 der Upload? Nein, tut es nicht. mit multipart/form-data geht es als binary hoch. –

0

Ich definitiv, für den HTTP-Ansatz als der Rest der Menschen hier entscheiden. Der Grund dafür ist, dass Sie über die meisten Dateien von ein bis drei Megabyte gesagt haben.

Das Problem ist für den „Rest“, so:

Haben Sie Benutzer größere Dateien per E-Mail an einen Deamon Skript senden betrachtet ermöglicht, dass die E-Mails und lädt die E-Mails auf das Konto mit der damit verbundenen bekommt Absender? Oder es gibt die Lösung des Flash-Uploaders, in einem Facebook-ähnlichen Ansatz.