2016-09-28 13 views
9

में कितने समवर्ती अनुरोधों को मल्टीप्लेक्स करना चाहते हैं, लंबे समय तक, ब्राउज़र ने वेब पेज से संपत्तियों को पुनर्प्राप्त करने के लिए प्रति होस्ट अधिकतम 6 समवर्ती HTTP 1.1 कनेक्शन का उपयोग किया है। इस स्वर्ण मानक से परे (दूर) को डॉस के रूप में माना जाता है और आपको सर्वर से प्रतिबंधित कर दिया जाता है।हम HTTP/2

अब HTTP/2 है और हम एक ही कनेक्शन पर कई HTTP अनुरोधों को मल्टीप्लेक्स कर सकते हैं। क्या हम अभी भी ओवरलोडिंग सर्वर को रोकने के लिए कनेक्शन पर मल्टीप्लेक्स समवर्ती अनुरोधों की संख्या पर समान सीमाओं का उपयोग करना चाहिए? या एक कनेक्शन पर कई और अनुरोधों को मल्टीप्लेक्स करने में कोई हानि नहीं है?

कोई भी जानता है कि ब्राउजर प्रति होस्ट और HTTP/2 सर्वर के लिए प्रति कनेक्शन का उपयोग किस सीमा तक करते हैं?

उत्तर

11

धाराओं की संख्या कि क्लाइंट और सर्वर आरंभ कर सकते हैं असीमित नहीं है, यह SETTINGS फ्रेम प्रत्येक सहकर्मी कनेक्शन की शुरुआत में भेजता है की SETTINGS_MAX_CONCURRENT_STREAMS पैरामीटर द्वारा अनिवार्य है: देखने section 6.5.2 of RFC 7540 डिफ़ॉल्ट असीमित है, और आरएफसी

यह अनुशंसित है कि यह मान तो के रूप में अनावश्यक रूप से समानांतरवाद सीमा नहीं, कोई 100 से कम हो: निम्नलिखित सिफारिश की है।

HTTP/2 में समांतरता पर विचार करते समय धाराओं की संख्या खाते में ध्यान देने वाला एकमात्र पैरामीटर नहीं है। वजन और धारा निर्भरता भी खेल में आती है।

प्रत्येक स्ट्रीम को वजन दिया जाता है, और आरएफसी अनुशंसा करता है कि सर्वर संसाधनों को उनके वजन के आधार पर स्ट्रीम करने के लिए असाइन करें। क्लाइंट साइड, फ़ायरफ़ॉक्स छवियों की तुलना में सीएसएस को उच्च भार निर्दिष्ट करता है। See this great presentation for more details about how each browser prioritizes and organizes its streams। क्रोम निर्भरता का उपयोग करता है ताकि सबसे महत्वपूर्ण तत्व (सीएसएस, एचटीएमएल) दूसरों की तुलना में निर्भरता श्रृंखला में अधिक हो। See this tool जो क्रोम उत्पन्न करता है कि निर्भरता पेड़ को दर्शाता है। सर्वर पक्ष, H2O, a new and fast HTTP server, निर्भरता और वजन के आधार पर क्लाइंट को स्ट्रीम भेजने के लिए प्रति कनेक्शन एक ओ (1) शेड्यूलर लागू करता है। इसका अर्थ यह है कि यदि आप डिफ़ॉल्ट निर्भरता वाले 500 तत्वों का अनुरोध करते हैं, तो प्रत्येक स्ट्रीम को सर्वर संसाधनों का 1/500 वां मिलेगा।

जितना संभव हो उतना तत्व (नियमित वेब ब्राउज़िंग के लिए) अनुरोध करने के लिए कोई नकारात्मक पक्ष नहीं होना चाहिए। HTTPArchive के अनुसार, 40% पृष्ठों में 100 से अधिक तत्व होते हैं, और मुझे लगता है कि उन्हें एक ही समय में उनसे पूछना उचित है (बशर्ते धाराओं की संख्या SETTINGS_MAX_CONCURRENT_STREAMS से नीचे रहती है। मुझे विश्वास है कि अनुरोध करने में सक्षम होना क्या मायने रखता है उन्हें क्रम में ब्राउज़र को इसे यथासंभव प्रस्तुत करने की अनुमति होगी।