2009-09-26 16 views
18

मैंने "HTTP persistent connection" के बारे में पढ़ा है लेकिन किसी भी तरह से मुझे यह समझ में नहीं आता कि इस संदर्भ में लगातार क्या मतलब है।
क्या आप विस्तारित कर सकते हैं?"लगातार कनेक्शन" का क्या अर्थ है?

+2

कैओस का क्या मतलब है कि क्लाइंट और सर्वर के बीच कनेक्शन सूचना विनिमय के बाद बंद नहीं होता है - इसे आगे संचार के लिए खोल दिया जाता है। सूचना संचारित करने के लिए हर बार एक नया कनेक्शन स्थापित करने से यह बहुत तेज़ है। – NTDLS

उत्तर

18

अब तक सभी चर्चाएं चीजों के ब्राउज़र पक्ष से हैं। ब्राउज़र पहले वास्तविक पृष्ठ का अनुरोध करता है, और यह पृष्ठ को पार करता है और उस पृष्ठ को प्रस्तुत करने से पहले अन्य सभी संसाधनों को ढूंढता है। ब्राउजर इन संसाधनों और अन्य आश्रित संसाधनों को एक-एक करके अनुरोध करता है। इसलिए एक सतत कनेक्शन बनाए रखना यहां बहुत ही कुशल है, क्योंकि कनेक्शन बनाने और नष्ट करने के ऊपरी हिस्से से बचा जाता है।

अब चीजों के वेब सर्वर पक्ष से, एक सतत कनेक्शन वह होगा जो इसे वेब ब्राउज़र पर सामग्री को "धक्का" करने की अनुमति देता है। अब HTTP इसका समर्थन नहीं करता है। इसलिए, जावास्क्रिप्ट के साथ कुछ कामकाज हैं जहां पृष्ठ को कुछ समय बाद मूल रूप से ताज़ा किया जाता है।

आप कई वेब आधारित ईमेल प्रदाताओं द्वारा उपयोग की जा रही चाल को देख सकते हैं जो लगातार नए मेल के लिए पृष्ठभूमि में जांचते रहेंगे। यह एक भावना देता है कि जब कोई नया मेल आता है, तो सर्वर वेब ब्राउज़र पर नई मेल अधिसूचना "धक्का" देता है। लेकिन वास्तव में, यह वास्तव में वेब ब्राउज़र है जो किसी भी नए मेल के लिए सर्वर की जांच करता रहता है।

यह भी एक और बिंदु है कि मैं यह कहना चाहता हूं कि हम वास्तव में किसी भी पृष्ठ को रीफ्रेश नहीं देखते हैं जो किसी अन्य चाल के कारण होता है जो पृष्ठ के केवल विशिष्ट हिस्सों को अनुरोध द्वारा रीफ्रेश करने की अनुमति देता है। (एचआईएनटी: AJAX)

+0

बहुत जानकारीपूर्ण उत्तर! –

+1

यदि मैं किसी वेबसर्वर के साथ एक कॉन्सेक्शन खोलता रहता हूं तो ब्राउज़र लगातार लोडिंग बार दिखाएगा? –

+1

एक वेब ब्राउज़र केवल लोडिंग बार दिखाएगा, अगर यह वास्तव में कुछ अनुरोध करता है। बैकग्राउंड सामान चाहे कनेक्शन खुला है या ब्राउज़र के यूआई में दिखाई नहीं देनी चाहिए। – Trainee4Life

28

इसका मतलब यह है कि प्रतिक्रिया समाप्त होने के बाद सर्वर सॉकेट को बंद नहीं करता है (इसलिए प्रतिक्रिया की लंबाई अन्यथा इंगित की जाती है, हेडर या चंकिंग के माध्यम से), तो ग्राहक उसी पर अन्य अनुरोध कर सकता है सॉकेट। एक वेब पेज अक्सर पृष्ठ के समान सर्वर पर कई अन्य टुकड़ों (छवियों, सीएसएस, स्क्रिप्ट्स, ...) का अनुरोध करता है, इसलिए उसी सर्वर पर उन कुछ और अनुरोधों के लिए सॉकेट का पुन: उपयोग करने से कुल विलंबता कम हो सकती है मूल सॉकेट और सभी अनुवर्ती अनुरोधों के लिए नए खोलने।

+1

जैसा कि darkassassin93 ने कहा है कि एक Servlet पर out.close() के मामले में कनेक्शन मर जाएगा। इस मामले में हम जावा टॉमकैट सर्वर पर HTTP निरंतर कनेक्शन कैसे कार्यान्वित कर सकते हैं? या क्या हमें इसे लागू करने के लिए तीसरे पक्ष के औजारों का उपयोग करना होगा? एक और सवाल ग्राहक पक्ष के बारे में क्या है? –

+2

@ केविन, आपके पास ब्राउज़र ("क्लाइंट साइड") पर कोई नियंत्रण नहीं है: यह अपनी नीतियां स्थापित करेगा (आप उम्मीद कर सकते हैं कि यह "जीवित रहने" का समर्थन करता है; अधिकांश करते हैं)। 'close' को कॉल करना, मुझे विश्वास है कि कनेक्शन को बंद कर दिया गया है (यह उसका विशिष्ट उद्देश्य है) इसलिए (उम्मीद है कि ब्राउज़र सहयोग) कनेक्शन को बंद न करें 'बंद' को कॉल नहीं करना है - पर्याप्त नहीं हो सकता है निश्चित रूप से आवश्यक है। –

1

मुझे लगता है कि यह वेबसाइट ब्राउज़र के लिए http या https के लिए एक स्विचिंग है। यदि आपके पास पुराना https: // है और अब आप ब्राउज़र .htaccess फ़ाइल के लिए http का उपयोग कर रहे हैं तो यह समस्या योस्ट प्लगइन्स के माध्यम से एक पृष्ठ क्रॉल पृष्ठ के माध्यम से बनाई जानी चाहिए। इसके बारे में चिंता न करें महत्वपूर्ण त्रुटि नहीं है। हैकर्स के लिए यह आपकी वेबसाइट हैक करने का एक तरीका है यदि आपका एसएसएल कनेक्शन खाली है, तो उन्हें अपने एसएसएल कनेक्शन ई.बी http://www.example.com पर पृष्ठ या डोमेन संलग्न करना चाहिए और जब आप ब्राउज़र में https://www.example.com ब्राउज़ करते हैं तो आपके साइट डोमेन को खोलने के साथ कुछ अन्य लिंक भी हैं।

इसके लिए समाधान हमेशा वेबसाइट के लिए अपना पूरा पता उपयोग करें: अपनी वेबसाइट के लिए हैकर को अपनी वेबसाइट के उपयोग के लिए एसएसएल और https:/पेज के विरुद्ध सुरक्षित रखें।

तब यह समस्या कभी भी किसी भी परीक्षण साइट या पृष्ठ में दिखाई नहीं देती है।

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