http - How to interpret "Connection: keep-alive, close"? -
मैं जो समझता हूं, एक HTTP कनेक्शन या तो मैंने एक सर्वर को एक HTTP अनुरोध भेजा है: और इसका उत्तर दिया: मूलतः, मैं मानते हैं कि सर्वर को बग़ल में लगाया गया है क्योंकि हालांकि, रिसीवर के रूप में, हम कैसे संभाल ऐसा संदेश? क्या हमें व्याख्या इस हेडलर मान को टीएल; डॉ: क्रोम इस प्रतिक्रिया हैडर को मैंने इस प्रश्न पर ठोकर खाई थी क्योंकि मैंने अनुकूलन करने की कोशिश की थी मेरी वेबसाइट के लिए पृष्ठ लोड होने का समय। संदर्भित आरएफसी में मुझे इस बारे में कुछ नहीं पता था कि तो, मुझे पता लगाना होगा। चलिए कुछ गहन जांच करें: मैंने देखा है कि क्रोम हमेशा क्रोम को वेबसाइट प्रदर्शित करने के लिए 14 तत्वों को प्राप्त करना है, इनमें से अधिकतर छवियों या सीएसएस फ़ाइलों जैसी स्थिर चीजें और इसे पूरे 14 टीसीपी कनेक्शनों में लिया गया और उसमें बहुत समय लग गया (लगभग 1,2 सेकंड)। एक छवि के प्रत्येक अनुरोध के बाद (उदा।) तो क्रोम बनाम फ़ायरफ़ॉक्स के बारे में क्या? क्रोम के एक सर्वर के लिए अधिकतम संख्या में समवर्ती कनेक्शन हैं। फ़ायरफ़ॉक्स में अधिक दानेदार कॉन्फ़िगरेशन है और लगातार (मैक्सिमम का 6, लगभग: कॉन्फ़िग में देखा जाता है) और निरंतर (अधिकतम संख्या अलग-अलग स्रोतों में बहुत अलग है )। लेकिन प्रतीक्षा करें ... क्रोम और फ़ायरफ़ॉक्स, एचटीटीपी / 1.1 अनुरोध हेडर्स को मैंने एक साधारण चाल की कोशिश करने का फैसला किया और वेब रूट फोल्डर में मेरे सर्वर अब इसका जवाब देता है: अब मैंने एक नज़र लिया टीसीपी सेगमेंट में फिर से: क्रोम से सिर्फ 9 सर्वर मेरे सर्वर पर थे और केवल <3> और फ़ायरफ़ॉक्स के बारे में क्या है? अभी भी उन 14 अनुरोध थे! यह तय कैसे करें और एफसीजी प्रक्रियाओं को रखने-जीवित के साथ काम करने के लिए भी? मैंने निम्नलिखित लाइनों को मेरे वर्चुअलहोस्ट अनुभाग में httpd.conf विन्यास के जोड़ दिया है: <पूर्व> और निष्कर्ष: कनेक्शन फ़ील्ड के साथ एक शीर्ष सेट को क्रोम द्वारा इसलिए यदि आप एक ग्राहक को प्रतिक्रिया वाले हेडर से निपटने के लिए तैयार हैं जिसमें हो सकता है या
close ।
प्राप्त / page1 / HTTP / 1.1 होस्ट: server.com कनेक्शन: रख-जिंदा
HTTP / 1.1 200 ओके कनेक्शन: रख-जिंदा, बंद करें
जैसे-जैसे प्रतिक्रियाएं, बंद करें अस्पष्ट है।
रखना-जिंदा या
close जैसा होना चाहिए?
रख-जिंदा के रूप में रखता है और फ़ायरफ़ॉक्स प्रत्येक कनेक्शन को बंद कर देता है, तो एक अप्रत्यक्ष कनेक्शन बनाए रखता है।
कनेक्शन हैडर में कितने प्रविष्टियाँ ठीक से नियंत्रित हो सकती हैं ऐसा प्रतीत होता है कि कार्यान्वयन दो संभावनाओं में से चुन सकता है:
कनेक्शन के साथ एक HTTP / 1.1 अनुरोध भेज रहा था: रहते रहो और मेरा अपाचे डिफ़ॉल्ट कॉन्फ़िगरेशन हमेशा एक
कनेक्शन: बंद करें शीर्षलेख इसलिए मैंने जांच शुरू की और वायरस शार्क के साथ टीसीपी सेगमेंट पर एक नज़र डाला।
FIN फ्लैग सेट 1 से एक टीसीपी सेगमेंट आया।
कनेक्शन: रख-जिंदा के साथ भेज रहे हैं, इसलिए दोनों 6 तक सीमित होना चाहिए (क्योंकि यह लगातार कनेक्शन खोलने का अनुरोध है )।
.htaccess में निम्न पंक्तियां जोड़ दीं:
& lt; IfModule mod_headers.c & gt; हैडर सेट कनेक्शन-रहते रहते हैं & lt; / ifModule & gt;
कनेक्शन: रख-जिंदा, बंद करें
FIN फ्लैग 1 से सेट कर दिया गया। तो यह चाल काम करने के लिए लग रहा था। लेकिन उन तीन कनेक्शन क्यों थे, जो डेटा ट्रांसमिशन के बाद कनेक्शन बंद कर देते हैं? ये PHP अनुरोध थे, जैसे HTTP हेडर
X-Powered-By: PHP / 5.4.11 पुष्टि हुई।
KeepAliveTimeout पर 5 MaxKeepAliveRequests 100
.htaccess में जोड़े गए लोगों को हटा दिया गया है। अब सर्वर किसी भी भ्रमित नहीं भेज रहा है -
कनेक्शन: रख-जिंदा, बंद करें , लेकिन केवल
कनेक्शन: रख-जिंदा और सबकुछ ठीक काम करती है!
HTTP / 1.1 200 ओके कनेक्शन: रख-जिंदा, बंद करें
रख-जिंदा के रूप में समझाया जाएगा, जबकि फ़ायरफ़ॉक्स प्रत्येक कनेक्शन को बंद करने लगता है ऐसा लगता है कि वास्तविक कार्यान्वयन पर निर्भर है।
कनेक्शन: रख-जिंदा, बंद करें , मैं प्रस्ताव देगा यदि आप एक से अधिक अनुरोध की आवश्यकता रखते हैं, तो जीवित रहने का प्रयास करने के लिए। सबसे खराब चीज जो हो सकती है: सर्वर कनेक्शन को बंद कर देगा और आपको फिर से कनेक्ट करने की आवश्यकता होगी (यह बिल्कुल अन्य विकल्प जो आपके पास होता!)
Comments
Post a Comment