2009-08-06 21 views
13

मैं एक बड़ी वेबसाइट बना रहा हूं जहां सदस्यों को सामग्री (छवियों, वीडियो) को 20 एमबी आकार तक अपलोड करने की अनुमति होगी (शायद 15 एमबी की तरह थोड़ा कम, हम अभी तक अंतिम अपलोड सीमा पर बस नहीं गए हैं लेकिन यह कहीं 10-25 एमबी के बीच होगा)।HTTP बनाम एफ़टीपी अपलोड

मेरा सवाल है, क्या मुझे इस मामले में HTTP या FTP अपलोड के साथ जाना चाहिए। ध्यान रखें कि अपलोड का 80-90% सीसीए 1-3 एमबी जैसे छोटे आकार का होगा, लेकिन समय-समय पर कुछ सदस्य बड़ी फाइलें अपलोड करना चाहेंगे (10 एमबी +)।

क्या HTTP अपलोडिंग इतनी बड़ी फ़ाइलों के लिए पर्याप्त विश्वसनीय है या क्या मुझे एफ़टीपी के साथ जाना चाहिए? फ़ाइलों को अपलोड करते समय HTTP और FTP के बीच कोई उल्लेखनीय गति अंतर है?

मैं पूछ रहा हूं क्योंकि मैं ज़ेंड फ्रेमवर्क का उपयोग कर रहा हूं जिसमें फ़ाइल अपलोड के लिए पहले से ही HTTP एडाप्टर है, अगर मैं एफ़टीपी चुनता हूं तो मुझे इसके लिए अपना एडाप्टर लिखना होगा।

धन्यवाद!

उत्तर

15

HTTP निश्चित रूप से आपके ग्राहकों पर एक बोझ कम रखता है। बहुत से स्थानों में प्रॉक्सी या फ़ायरवॉल हैं जो सभी एफ़टीपी ट्रैफिक को अवरुद्ध करते हैं (अंदर या बाहर)।

+3

HTTP पर FTP का उपयोग करने के कई तकनीकी कारण हैं, लेकिन मुझे लगता है कि उपयोगकर्ता अनुभव उन सभी को ट्रम्प करता है। –

3

मैं व्यंग्यात्मक होने की wanto नहीं है, लेकिन फाइल ट्रांसफर प्रोटोकॉल फ़ाइल स्थानांतरण :)

+13

यह नहीं है। यह बस पुराना है। – vy32

0

संसाधन उपलब्धता/उपयोग विश्वसनीयता या गति की तुलना में एक मुद्दे के अधिक है के बारे में अधिक विश्वसनीय होना चाहिए। प्रत्येक अपलोड अपलोड की अवधि के लिए आपके वेब सर्वर पर संसाधनों - थ्रेड/मेमोरी/आदि का उपभोग करता है। यदि बड़ी फ़ाइलों के लिए सामग्री अपलोड यातायात महत्वपूर्ण है तो पृष्ठ अनुरोधों के लिए अधिक संवेदनशील होने के लिए अपने HTTP सर्वर को मुक्त करने के लिए एफ़टीपी का उपयोग करना बेहतर होगा।

+0

इसे अभी भी उसी मशीन पर चलाना होगा, इसलिए कोई विशिष्ट लाभ नहीं होगा जब तक कि विशिष्ट FTP कार्यान्वयन उस विशिष्ट HTTP सर्वर में HTTP अपलोड से अधिक कुशल/निष्पादित न हो। या यदि आप किसी प्रकार के साझा स्टोरेज का उपयोग करते हैं, तो आप एक अलग समर्पित अपलोड HTTP सर्वर भी कर सकते हैं, इसलिए एक या दूसरे को पसंद करने का कोई कारण नहीं है। –

+0

आपको क्यों विश्वास है कि इन्हें एक ही मशीन पर चलाना होगा? – ScottTx

+0

संभवतः HTTP सर्वर को अपलोड की गई फ़ाइलों तक पहुंचने की आवश्यकता है। –

7

HTTP ऐसे बड़ी फ़ाइलों

के लिए पर्याप्त विश्वसनीय अपलोड करने है एफ़टीपी के

एक प्रमुख लाभ गर्भपात अपलोड फिर से शुरू करने की क्षमता होगी। अधिकांश एफ़टीपी सर्वर और क्लाइंट इसका समर्थन करते हैं, हालांकि यह हमेशा सक्रिय नहीं होता है। जबकि HTTP के साथ, यह विशेष शीर्षलेखों का उपयोग कर सैद्धांतिक रूप से संभव है, लेकिन एक सामान्य ग्राहक (यानी ब्राउज़र) इसका समर्थन नहीं करेगा।

एक और लाभ थोक अपलोड होगा: एफ़टीपी में बहुत आसान, HTTP में नहीं।

लेकिन क्यों न केवल दोनों विकल्पों की पेशकश करते हैं? उन लोगों के लिए HTTP जो प्रॉक्सी के पीछे हैं या एक एफ़टीपी क्लाइंट का उपयोग नहीं कर सकते हैं, और उन लोगों के लिए एफ़टीपी जिन्हें अविश्वसनीय कनेक्शन पर कई या बड़े अपलोड अपलोड करना है।

+1

एफ़टीपी अपलोड एफपीटी क्लाइंट के साथ नहीं किया जाएगा। यह PHP कोड में वेब ब्राउज़र के माध्यम से किया जाएगा। एकमात्र परेशानी है कि मुझे एफ़टीपी अपलोड के लिए अपना एडाप्टर क्लास लिखना होगा (क्योंकि ज़ेंड फ्रेमवर्क वर्तमान में केवल HTTP का समर्थन करता है) जो मुझे कुछ समय लेगा और मेरे पास समय सीमा है। –

+1

मुझे नहीं लगता कि सर्वर भाग के कार्यान्वयन के साथ क्लाइंट का उपयोग करने के लिए कुछ भी नहीं है। Webbrowsers बिल्कुल एफ़टीपी अपलोड का समर्थन नहीं करते हैं (फ़ायरफ़ॉक्स नहीं करता है, हालांकि मुझे लगता है कि एक एडन है)। लेकिन अगर आप मौजूदा एफ़टीपी सर्वर का उपयोग नहीं कर सकते हैं, तो निश्चित रूप से इसे स्वयं लागू करने का अच्छा विचार नहीं है। –

12

HTTP का बड़ा लाभ यह है कि यह फ़ायरवॉल पर चला जाता है और इसे एन्क्रिप्ट करना बहुत आसान होता है --- पोर्ट 80 पर HTTP के बजाय पोर्ट 443 पर HTTPS का उपयोग करें। दोनों प्रॉक्सी और फ़ायरवॉल से गुजरते हैं। और इन दिनों एक पोस्ट का उपयोग कर HTTP/HTTPS पर 20 एमबी फ़ाइलों को अपलोड करना बहुत आसान है।

HTTP के साथ समस्या यह है कि यह अपलोड के लिए पुनरारंभ करने योग्य नहीं है। अगर आपको फ़ाइल का 80% भेजा जाता है और फिर विफलता होती है, तो आपको शुरुआत में पुनरारंभ करना होगा। यही कारण है कि विक्रेता फ्लैश-आधारित, जावा-आधारित या जावास्क्रिप्ट-आधारित अपलोडर और डाउनलोडर्स का उपयोग कर तेजी से उपयोग कर रहे हैं। ये सिस्टम देख सकते हैं कि कितनी फाइल भेजी गई है, यह सुनिश्चित करने के लिए मैक भेजें कि यह ठीक से पहुंचा है, और गुम होने वाले हिस्सों को फिर से भेज दें।

एक मैक आपके विचार से कहीं अधिक महत्वपूर्ण है। टीसीपी चेकसम केवल 32 बिट्स हैं, इसलिए त्रुटि का पता लगाने में 1-इन -4-बिलियन मौका है। यह संभवतः आज के इंटरनेट के साथ बहुत कुछ होता है।

+0

यह सच है कि HTTP पोस्ट को पुनरारंभ नहीं किया जा सकता है, लेकिन फ्लैश और जावास्क्रिप्ट जावा पुट जैसी फ़ाइलों के साथ HTTP PUTs नहीं कर सकता है। –

+0

हां, और मेरा जवाब कहता है कि विक्रेता तेजी से फ्लैश और जावा-आधारित अपलोडर का उपयोग कर रहे हैं क्योंकि वे पुनरारंभ करने योग्य हैं। – vy32

+0

437 के बजाय बंदरगाह 433 अधिक आम तौर पर HTTPS नहीं है? –

-5

एफ़टीपी HTTP की तुलना में कम बैंडविड्थ का उपभोग करेगा, क्योंकि बाद में बाइनरी सामग्री को सादे पाठ में एन्कोड करने की आवश्यकता होगी, इस प्रकार कुल स्थानांतरण आकार बढ़ाएं। (1/3 तक)।

हालांकि, बैंडविड्थ खपत, मुख्य रूप से प्रमुख चिंता नहीं हो सकती है, उपयोगिता और सुरक्षा जैसे अन्य कारकों की तुलना में, जिसमें HTTP प्रबल होता है।

+5

क्या? बेस 64 अपलोड? नहीं, यह नहीं करता है। मल्टीपार्ट/फॉर्म-डेटा का उपयोग करके यह बाइनरी के रूप में जाता है। –

0

मैं निश्चित रूप से, यहां बाकी लोगों के रूप में HTTP दृष्टिकोण का चयन करता हूं। इसका कारण यह है कि आपने अधिकांश फ़ाइलों को एक से तीन मेगाबाइट्स के बारे में बताया है।

समस्या

, "आराम" के लिए है, इसलिए:

आप उपयोगकर्ताओं को एक deamon स्क्रिप्ट कि ईमेल हो जाता है और उस खाते को ईमेल अपलोड करता है करने के लिए ई-मेल के माध्यम से बड़ी फ़ाइलों को भेजने की अनुमति देकर माना जाता है प्रेषक? या फेसबुक अपलोडर दृष्टिकोण में फ्लैश अपलोडर का समाधान है।

संबंधित मुद्दे