ऑरिजिन-एजेंट-क्लस्टर हेडर की मदद से, परफ़ॉर्मेंस आइसोलेशन का अनुरोध करना

पूरे डोमेन के लिए स्क्रिप्टिंग की सीमा तय करने और ब्राउज़र से खास संसाधनों का अनुरोध करने के लिए एक नया एचटीटीपी रिस्पॉन्स हेडर.

Domenic Denicola
Domenic Denicola

Origin-Agent-Cluster एक नया एचटीटीपी रिस्पॉन्स हेडर है, जो ब्राउज़र को एक ही साइट के क्रॉस-ऑरिजिन पेजों के बीच सिंक्रोनस स्क्रिप्टिंग ऐक्सेस. ब्राउज़र भी इनका इस्तेमाल कर सकते हैं Origin-Agent-Cluster से यह पता चलता है कि आपकी साइट के ऑरिजिन के लिए, अलग-अलग संसाधन होने चाहिए. जैसे: खास प्रोसेस के लिए बनाया गया है.

ब्राउज़र के साथ काम करना

फ़िलहाल, Origin-Agent-Cluster हेडर को सिर्फ़ Chrome 88 और उसके बाद के वर्शन पर लागू किया जाता है. इसे डिज़ाइन किया गया था Mozilla Firefox के उन प्रतिनिधियों के साथ मिलकर बनाया गया है जिन्होंने इसे वर्थ के रूप में मार्क किया है प्रोटोटाइपिंग, और इसमें एक प्रीलिंनरी पॉज़िटिव रिसेप्शन से Safari द्वारा उपयोग किए जाने वाले ब्राउज़र इंजन, WebKit के प्रतिनिधि.

हालांकि, इस बीच, आपके सभी विज्ञापनों में Origin-Agent-Cluster हेडर को डिप्लॉय करने में कोई समस्या नहीं होगी मौजूदा उपयोगकर्ताओं की संख्या घटी है. जो ब्राउज़र उसे नहीं समझते, बस उसे अनदेखा कर देंगे. और, जब से आपकी साइट पर ऑरिजिन-की एजेंट क्लस्टर असल में, साइट के हिसाब से सेट किए गए एजेंट के मुकाबले कम काम कर सकते हैं ( डिफ़ॉल्ट), इंटरऑपरेबिलिटी से जुड़ी कोई समस्या नहीं है.

ब्राउज़र, एक ही साइट के ऑरिजिन को अपने-आप अलग-अलग क्यों नहीं कर सकते

वेब को एक ही ऑरिजिन से जुड़ी नीति के आधार पर बनाया गया है. यह एक ऐसी सुरक्षा सुविधा है जो यह प्रतिबंधित करता है कि दस्तावेज़ और स्क्रिप्ट किसी दूसरे संसाधन के साथ कैसे इंटरैक्ट कर सकते हैं शुरुआत की जगह. उदाहरण के लिए, https://a.example पर होस्ट किया गया पेज ऑरिजिन, https://b.example या https://sub.a.example से अलग है.

पर्दे के पीछे, ब्राउज़र उस अलग-अलग सुविधा का इस्तेमाल करते हैं जो ऑरिजिन अलग-अलग तरीकों से उपलब्ध कराता है. पुराने समय में दिन में, भले ही अलग-अलग ऑरिजिन एक-दूसरे के डेटा को ऐक्सेस न कर पाएं, तब भी वे ऑपरेटिंग सिस्टम थ्रेड, प्रोसेस, और मेमोरी ऐलोकेशन जैसे संसाधन शेयर करने में मदद मिलती है. इसका मतलब यह था कि अगर एक टैब धीमा था, तो इससे अन्य सभी टैब भी धीमे हो जाएंगे. इसके अलावा, अगर किसी टैब ने बहुत ज़्यादा मेमोरी का इस्तेमाल किया है, तो पूरे ब्राउज़र को क्रैश कर सकता है.

आज-कल ब्राउज़र ज़्यादा बेहतर हो जाते हैं और अलग-अलग ऑरिजिन को अलग-अलग प्रोसेस. यह कैसे काम करता है, यह हर ब्राउज़र के हिसाब से अलग-अलग होता है: ज़्यादातर ब्राउज़र में कुछ हद तक अलग-अलग होता है लेकिन एक ही टैब में मौजूद अलग-अलग iframe किसी प्रक्रिया को शेयर कर सकते हैं. दरअसल, प्रोसेस कुछ मेमोरी ओवरहेड के साथ होती हैं, तो वे अनुमान का इस्तेमाल करके बहुत ज़्यादा पैदा करने से बचते हैं: उदाहरण के लिए, Firefox इसमें उपयोगकर्ता को कॉन्फ़िगर करने लायक प्रोसेस की सीमा है, और Chrome का व्यवहार डेस्कटॉप (जहां मेमोरी ज़्यादा होती है) और मोबाइल (जहां यह ज़्यादा है) के बीच अपना व्यवहार अलग-अलग होता है कम है).

अनुभव के ये नतीजे पूरी तरह सटीक नहीं हैं. इनमें एक अहम सीमा भी होती है, क्योंकि एक ही ऑरिजिन से जुड़ी नीति के अपवाद, जो https://sub.a.example और एक-दूसरे से बात करने के लिए https://a.example, ब्राउज़र से सबडोमेन अपने-आप अलग नहीं हो सकते एक-दूसरे से जुड़ी हैं.

इस डिफ़ॉल्ट तरीके को "site-keyed agent clusters" कहा जाता है: इसका मतलब है कि ब्राउज़र, पेज के हिसाब से ग्रुप बनाकर उनकी साइट पर. नया Origin-Agent-Cluster हेडर, ब्राउज़र को डिफ़ॉल्ट सेटिंग को बदलने के लिए कहता है किसी पेज को ग्रुप करने के लिए, उसे ऑरिजिन की मदद से बनाए गए एजेंट क्लस्टर में डालना सिर्फ़ उन पेजों के लिए जिनका ऑरिजिन एक ही है. खास तौर पर, एक ही साइट के क्रॉस-ऑरिजिन पेज को एजेंट क्लस्टर से बाहर रखा जाएगा.

इस ऑप्ट-इन को अलग करने की मदद से, ब्राउज़र इन नए ऑरिजिन-की एजेंट क्लस्टर को अपने हिसाब से खास तौर पर बनाए गए संसाधन होते हैं, जिनका इस्तेमाल किसी दूसरे ऑरिजिन से नहीं किया जाता है. उदाहरण के लिए, ऐसे पेज उनकी अपनी प्रोसेस हो सकती है या उन्हें अलग थ्रेड पर शेड्यूल किया जा सकता है. अपनी रिपोर्ट में आपके पेज के लिए Origin-Agent-Cluster हेडर, आप ब्राउज़र को यह बताते हैं कि पेज आपको ऐसे संसाधनों का फ़ायदा मिल सकता है.

हालांकि, इन फ़ायदों को अलग-अलग करने और ये फ़ायदे पाने के लिए, ब्राउज़र को कुछ लेगसी सुविधाएं शामिल हैं.

ऑरिजिन के हिसाब से बने पेज क्या नहीं कर सकते

जब आपका पेज, ऑरिजिन के हिसाब से बने एजेंट क्लस्टर में होता है, तो एक ही साइट से बात करने की कुछ सुविधाएं बंद हो जाती हैं ऐसे क्रॉस-ऑरिजिन पेज जो पहले उपलब्ध थे. खास तौर पर:

  • अब सेट नहीं किया जा सकता document.domain. यह है ऐसी पुरानी सुविधा जो आम तौर पर, एक ही साइट के क्रॉस-ऑरिजिन पेजों को हर पेज के लिए किसी अन्य उपयोगकर्ता के DOM को दिखाया जाता है, लेकिन Origin-keyed agent clusters में, यह बंद रहता है.

  • अब नहीं भेजा जा सकता WebAssembly.Module ऑब्जेक्ट को postMessage() के ज़रिए, उसी साइट के क्रॉस-ऑरिजिन पेजों पर ले जाते हैं.

  • (सिर्फ़ Chrome के लिए) अब नहीं भेजी जा सकती SharedArrayBuffer या WebAssembly.Memory ऑब्जेक्ट को उसी साइट के क्रॉस-ऑरिजिन वाले अन्य पेजों पर ले जाते हैं.

Origin-keyed agent clusters का इस्तेमाल कब करना चाहिए

Origin-Agent-Cluster हेडर का सबसे ज़्यादा फ़ायदा इन ऑरिजिन को होता है:

  • जब भी मुमकिन हो, तब उनके लिए खास तौर पर बनाए गए संसाधनों का इस्तेमाल करके सबसे अच्छा परफ़ॉर्म करें. उदाहरण के लिए: गेम, वीडियो कॉन्फ़्रेंसिंग की साइटें या मल्टीमीडिया कॉन्टेंट बनाने वाले ऐप्लिकेशन हों.

  • इसमें बहुत ज़्यादा संसाधन वाले iframe शामिल हैं, जो अलग-अलग ऑरिजिन वाले हैं, लेकिन एक ही साइट का इस्तेमाल करते हैं. उदाहरण के लिए, अगर https://mail.example.com, https://chat.example.com iframe, ऑरिजिन-कीइंग को एम्बेड करता है https://mail.example.com/ पक्का करता है कि चैट टीम का लिखा कोड गलती से न हो मेल टीम के लिखे गए कोड में रुकावट डालते हैं. साथ ही, ब्राउज़र से उन्हें अलग-अलग कोड लिखने के लिए संकेत दे सकते हैं उन्हें अलग-अलग शेड्यूल करने और एक-दूसरे पर परफ़ॉर्मेंस के असर को कम करने के लिए प्रोसेस करता है.

  • अलग-अलग ऑरिजिन वाले, एक ही साइट के पेजों पर एम्बेड किए जाने की उम्मीद की जाती है, लेकिन खुद को इस प्लैटफ़ॉर्म पर ज़्यादा संसाधन भी नहीं लगते. उदाहरण के लिए, अगर https://customerservicewidget.example.com वीडियो चैट के लिए कई संसाधन उपलब्ध होंगे. इन्हें अलग-अलग ऑरिजिन पर जोड़ा जाएगा https://*.example.com, उस विजेट को बनाए रखने वाली टीम, Origin-Agent-Cluster का इस्तेमाल कर सकती है हेडर का इस्तेमाल करें, ताकि एम्बेडर पर उनकी परफ़ॉर्मेंस के असर को कम किया जा सके.

इसके अलावा, आपको यह भी पक्का करना होगा कि आपके पास ऊपर बताए गए कभी-कभी इस्तेमाल किए गए ऐप्लिकेशन को बंद करने की अनुमति है क्रॉस-ऑरिजिन कम्यूनिकेशन फ़ीचर और यह कि आपकी साइट का इस्तेमाल कर रही है एचटीटीपीएस.

लेकिन आखिर में, ये सिर्फ़ दिशा-निर्देश हैं. Origin-keyed agent clusters आपकी साइट की मदद करेगा या नहीं भी मेज़रमेंट से सबसे सही तरीके से पता चलता है. खास तौर पर, आप को मापना चाहते हैं आपकी वेबसाइट की परफ़ॉर्मेंस की अहम जानकारी और संभावित तौर पर आपकी मेमोरी इस्तेमाल किया जा सकता है. (इसमें मेमोरी का इस्तेमाल चिंता का विषय है, क्योंकि खेल-कूद की प्रोसेस की संख्या बढ़ने से हर प्रोसेस मेमोरी ओवरहेड.) आपको सिर्फ़ ऑरिजिन-कीइंग रोल आउट करके, सबसे बेहतर होने की उम्मीद नहीं करनी चाहिए.

यह क्रॉस-ऑरिजिन आइसोलेशन से कैसे जुड़ा है?

Origin-Agent-Cluster हेडर के ज़रिए, एजेंट क्लस्टर की ऑरिजिन-कीइंग संबंधित है, लेकिन अलग-अलग है Cross-Origin-Opener-Policy और से, क्रॉस-ऑरिजिन आइसोलेशन से Cross-Origin-Embedder-Policy हेडर.

अगर किसी साइट ने खुद को क्रॉस-ऑरिजिन आइसोलेटेड बनाया है, तो वह उसी सेम-साइट क्रॉस-ऑरिजिन को भी बंद कर देगी कम्यूनिकेशन सुविधाओं की जानकारी.Origin-Agent-Cluster हालांकि, क्रॉस-ऑरिजिन आइसोलेशन के साथ भी Origin-Agent-Cluster हेडर काम का हो सकता है. हालांकि, अतिरिक्त हेडर के तौर पर यह ब्राउज़र को उसके संसाधन आवंटन के अनुभव के हिसाब से बदलाव करने का संकेत देता है. इसलिए, आपको अब भी Origin-Agent-Cluster हेडर को लागू करने और नतीजों को मेज़र करने से जुड़ा डेटा. यहां तक कि उन पेजों पर भी पहले से क्रॉस-ऑरिजिन आइसोलेटेड है.

Origin-Agent-Cluster हेडर को इस्तेमाल करने का तरीका

Origin-Agent-Cluster हेडर का इस्तेमाल करने के लिए, अपने वेब सर्वर को कॉन्फ़िगर करें, ताकि वह यह एचटीटीपी भेज सके रिस्पॉन्स हेडर:

Origin-Agent-Cluster: ?1

?1 का मान स्ट्रक्चर्ड बूलियन true के लिए हेडर सिंटैक्स वैल्यू.

इस हेडर को आपकी साइट के ऑरिजिन से मिले सभी जवाबों पर भेजना ज़रूरी है, न कि सिर्फ़ कुछ पेजों पर. ऐसा न करने पर, आपको अलग-अलग नतीजे दिख सकते हैं, जिनमें ब्राउज़र "याद आता है" ऑरिजिन-कीइंग देखना अनुरोध करती है और इसलिए यह उन पेजों पर भी ऑरिजिन-की होती है जो इसके लिए नहीं कहते. या उलटा: अगर पहला पेज जब कोई उपयोगकर्ता विज़िट करता है उसमें हेडर नहीं है, तो ब्राउज़र याद रखेगा कि आपका ऑरिजिन ध्यान रखें कि ऑरिजिन-की होना चाहिए और बाद के पेजों पर हेडर को अनदेखा कर देगा.

ब्राउज़र हमेशा हेडर का पालन क्यों नहीं कर सकता?

इस "मेमोरी" की वजह ताकि ऑरिजिन के लिए एक जैसा तरीका इस्तेमाल किया जा सके. अगर किसी पेज पर Origin-keyed का इस्तेमाल किया गया था, जबकि अन्य नहीं किए गए थे. इसका मतलब है कि आपके पास एक ही ऑरिजिन वाले दो पेज हो सकते थे उन्हें अलग-अलग एजेंट क्लस्टर में रखा जाता था, इसलिए उन्हें एक-दूसरे से बात करने की अनुमति नहीं होती थी. यह होगा यह वेब डेवलपर और ब्राउज़र के अंदरूनी कामों, दोनों के लिए एक बहुत ही अजीब बात है. इसलिए, अगर हेडर, पहले के हेडर से मेल नहीं खाता है, तो Origin-Agent-Cluster के लिए हेडर को अनदेखा कर देता है दिए गए ऑरिजिन के लिए देखा जाता है. Chrome में, ऐसा करने पर कंसोल चेतावनी दिखेगी.

यह समानता ब्राउज़िंग संदर्भ समूह तक सीमित है, जो टैब, विंडो या ऐसे iframe जो window.opener, frames[0] या window.parent. इसका मतलब है कि एक बार ऑरिजिन के ऑरिजिन या साइट-कीइंग का सेटल हो जाने के बाद ( हेडर को देखने या नहीं देखने) के लिए, ब्राउज़र को बदलने के लिए एक पूरी तरह से नया पुराने टैब से किसी भी तरह जुड़ा नहीं होगा.

Origin-Agent-Cluster हेडर की जांच करने के लिए, यह जानकारी अहम हो सकती है. इसे पहली बार जोड़ते समय बस पेज को फिर से लोड करने से काम नहीं होगा; आपको वह टैब बंद करना होगा और नया टैब खोलना होगा एक.

यह देखने के लिए कि Origin-Agent-Cluster हेडर लागू हुआ है या नहीं, JavaScript का इस्तेमाल करें window.originAgentCluster प्रॉपर्टी. यह true उन मामलों में होगा जहां हेडर (या दूसरे यूआरएल) ऑरिजिन-कीइंग जैसी प्रोसेस, जैसे कि क्रॉस-ऑरिजिन आइसोलेशन) की वजह से; false जब डाउनलोड नहीं होता था; और undefined को उन ब्राउज़र में इस्तेमाल किया जा सकता है जिनमें Origin-Agent-Cluster हेडर लागू नहीं किया जाता. आंकड़ों के प्लैटफ़ॉर्म में इस डेटा को लॉग करने से, आपके कॉन्फ़िगरेशन की जांच करने में मदद मिलती है सही तरीके से काम करें.

आखिर में, ध्यान रखें कि Origin-Agent-Cluster हेडर सिर्फ़ secure (सुरक्षित) पर काम करेगा कॉन्टेक्स्ट, जैसे कि एचटीटीपीएस पर पेज या http://localhost पर. गैर-localhost HTTP पेज, Origin-keyed agent के साथ काम नहीं करते हैं क्लस्टर.

ऑरिजिन-कीइंग एक सुरक्षा सुविधा नहीं है

Origin-keyed agent cluster का इस्तेमाल करते समय, आपकी ऑरिजिन को यहां से सिंक्रोनस ऐक्सेस से अलग किया जाता है समान-साइट वाले क्रॉस-ऑरिजिन पेज होते हैं, तो यह इनकी सुरक्षा नहीं सुरक्षा से जुड़े हेडर, जैसे कि Cross-Origin-Resource-Policy और Cross-Origin-Opener-Policy. खास तौर पर, यह साइड चैनल हमलों से भरोसेमंद सुरक्षा नहीं है, जैसे कि Spectre.

यह थोड़ा हैरान करने वाला हो सकता है, क्योंकि कभी-कभी ऑरिजिन-कीइंग की वजह से आपकी ऑरिजिन अपनी खुद की हो सकती है अलग-अलग प्रोसेस प्रोसेस हैं, और अलग-अलग प्रोसेस, साइड-चैनल हमलों से बचाव के लिए अहम हैं. हालांकि, याद रखें Origin-Agent-Cluster हेडर, इस बारे में सिर्फ़ एक संकेत है. ब्राउज़र ऐसा नहीं है आपको एक अलग प्रक्रिया देने की जवाबदेही है और कई वजहों से ऐसा हो सकता है:

  • ऐसा हो सकता है कि कोई ब्राउज़र ऐसा करने के लिए टेक्नोलॉजी का इस्तेमाल न करे. उदाहरण के लिए, वर्तमान में Safari और Firefox अलग टैब को अपनी प्रक्रियाओं में डाल सकता है, लेकिन iframe के लिए अभी ऐसा नहीं कर सकता.

  • ब्राउज़र यह तय कर सकता है कि वह किसी अलग प्रक्रिया के लिए खर्च नहीं करना चाहिए. उदाहरण के लिए, चालू कम मेमोरी वाले Android डिवाइस या Android वेबव्यू में, Chrome कम से कम प्रोसेस का इस्तेमाल करता है.

  • ऐसा हो सकता है कि ब्राउज़र Origin-Agent-Cluster हेडर से मिले अनुरोध को स्वीकार करना चाहे, हालांकि, ऐसा करने के लिए, प्रोसेस से अलग आइसोलेशन टेक्नोलॉजी का इस्तेमाल किया जा सकता है. उदाहरण के लिए, Chrome एक्सप्लोर करना के बजाय प्रोसेस का इस्तेमाल किया जाता है.

  • उपयोगकर्ता या किसी दूसरी साइट पर चल रहा कोड, शायद पहले ही साइट की मदद से साइन इन किए गए पेज पर नेविगेट कर चुका हो जिसकी वजह से लगातार काम करने की गारंटी मिल रही है और Origin-Agent-Cluster हेडर को पूरी तरह अनदेखा किया जाएगा.

इन वजहों से, यह ज़रूरी है कि Origin-keyed agent clusters को सुरक्षा सुविधा के तौर पर न देखा जाए. इसके बजाय, यह संसाधन के बंटवारे को तय करने में ब्राउज़र की मदद करता है. इससे यह भी पता चलता है कि ऑरिजिन को समर्पित संसाधनों का इस्तेमाल करना फ़ायदेमंद होगा (और यह कि आप कुछ खास सुविधाएं शामिल होती हैं.

सुझाव/राय दें या शिकायत करें

अगर आप, Origin-Agent-Cluster का इस्तेमाल कर रहे हैं या उसका इस्तेमाल करने के बारे में सोच रहे हैं, तो Chrome टीम को आपके विचार जानने में खुशी होगी हेडर. लोगों के हित और आपके सहयोग से, हमें सुविधाओं को प्राथमिकता देने और दूसरे लोगों को दिखाने में मदद मिलती है कि वे कितने अहम हैं. @ChromiumDev पर ट्वीट करें और Chrome DevRel को अपने विचार और अनुभव जानने दें.

अगर आपको इससे जुड़ी ज़रूरी शर्तों या इस सुविधा के काम करने के तरीके के बारे में और सवाल पूछने हैं, तो एचटीएमएल स्टैंडर्ड GitHub रिपॉज़िटरी में समस्या फ़ाइल करें. अगर आपको Chrome के लागू करने के दौरान कोई समस्या आती है, तो आप new.crbug.com Internals>Sandbox>SiteIsolation पर सेट किए गए कॉम्पोनेंट फ़ील्ड के साथ.

ज़्यादा जानें

Origin-keyed agent clusters के बारे में ज़्यादा जानने के लिए, इन लिंक पर जानकारी पाएं: