साइन किए हुए एक्सचेंज (एसएक्सजी)

SXG, डिलीवरी का एक तरीका है. इसकी मदद से, किसी संसाधन के ऑरिजिन की पुष्टि की जा सकती है. भले ही, उसे किसी भी तरीके से डिलीवर किया गया हो.

Katie Hempenius
Katie Hempenius
Devin Mullins
Devin Mullins

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

इस लेख में, SXG के बारे में पूरी जानकारी दी गई है: यह कैसे काम करता है, इस्तेमाल के उदाहरण, और टूल.

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

SXG, Chromium पर आधारित ब्राउज़र पर काम करता है. यह सुविधा, Chrome 73, Edge 79, और Opera 64 के वर्शन से शुरू होती है.

खास जानकारी

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

यह कैसे काम करता है

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

हस्ताक्षर किए गए एक्सचेंज के काम करने का तरीका बताने वाला डायग्राम. ब्राउज़र, कैश मेमोरी से बातचीत करता है, जो डेस्टिनेशन साइट से बातचीत करता है

पहले, किसी साइट के लिए अपने कॉन्टेंट को डिस्ट्रिब्यूटर के ज़रिए उपलब्ध कराने के साथ-साथ क्रेडिट बनाए रखने का एक ही तरीका था. इसके लिए, साइट को अपने एसएसएल सर्टिफ़िकेट डिस्ट्रिब्यूटर के साथ शेयर करने होते थे. इससे सुरक्षा से जुड़ी समस्याएं आ सकती हैं. इसके अलावा, कॉन्टेंट को पोर्टेबल बनाने के लिए, यह तरीका काफ़ी मुश्किल है.

एसएक्सजी फ़ॉर्मैट

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

यहां डिकोड की गई SXG फ़ाइल का एक उदाहरण दिया गया है.

format version: 1b3
request:
  method: GET
  uri: https://example.org/
  headers:
response:
  status: 200
  headers:
    Cache-Control: max-age=604800
    Digest: mi-sha256-03=kcwVP6aOwYmA/j9JbUU0GbuiZdnjaBVB/1ag6miNUMY=
    Expires: Mon, 24 Aug 2020 16:08:24 GMT
    Content-Type: text/html; charset=UTF-8
    Content-Encoding: mi-sha256-03
    Date: Mon, 17 Aug 2020 16:08:24 GMT
    Vary: Accept-Encoding
signature:
    label;cert-sha256=<em>ViFgi0WfQ+NotPJf8PBo2T5dEuZ13NdZefPybXq/HhE=</em>;
    cert-url=&quot;https://test.web.app/ViFgi0WfQ-NotPJf8PBo2T5dEuZ13NdZefPybXq_HhE&quot;;
    date=1597680503;expires=1598285303;integrity=&quot;digest/mi-sha256-03&quot;;sig=<em>MEUCIQD5VqojZ1ujXXQaBt1CPKgJxuJTvFlIGLgkyNkC6d7LdAIgQUQ8lC4eaoxBjcVNKLrbS9kRMoCHKG67MweqNXy6wJg=</em>;
    validity-url=&quot;https://example.org/webpkg/validity&quot;
header integrity: sha256-Gl9bFHnNvHppKsv+bFEZwlYbbJ4vyf4MnaMMvTitTGQ=</p>

<p>The exchange has a valid signature.
payload [1256 bytes]:</p>
<pre class="prettyprint"><code>&lt;title&gt;SXG example&lt;/title&gt;
&lt;meta charset=&#34;utf-8&#34;&gt;
&lt;meta http-equiv=&#34;Content-type&#34; content=&#34;text/html; charset=utf-8&#34;&gt;
&lt;style type=&#34;text/css&#34;&gt;
body {
    background-color: #f0f0f2;
    margin: 0;
    padding: 0;
}
&lt;/style&gt;
</code></pre>
<div>
    <h1>Hello</h1>
</div>

<p>

सिग्नेचर में मौजूद expires पैरामीटर, SXG के खत्म होने की तारीख दिखाता है. एक SXG ज़्यादा से ज़्यादा सात दिन के लिए मान्य हो सकता है. साइन किए गए एचटीटीपी एक्सचेंज के स्पेसिफ़िकेशन में, हस्ताक्षर वाले हेडर के बारे में ज़्यादा जानें.

सर्वर-साइड पर उपयोगकर्ताओं के हिसाब से कॉन्टेंट दिखाने की सुविधा के लिए सहायता

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

वेब पैकेजिंग

एसएक्सजी, वेब पैकेजिंग के स्पेसिफ़िकेशन के प्रस्ताव वाले बड़े फ़ैमिली का हिस्सा है. एसएक्सजी के अलावा, वेब पैकेजिंग स्पेसिफ़िकेशन का दूसरा मुख्य कॉम्पोनेंट वेब बंडल("बंडल किए गए एचटीटीपी एक्सचेंज") है. वेब बंडल, एचटीटीपी रिसॉर्स और बंडल को समझने के लिए ज़रूरी मेटाडेटा का कलेक्शन होता है.

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

साइन किए गए एक्सचेंज की मदद से, पेज लोड होने की स्पीड बढ़ाना

हस्ताक्षर किए गए एक्सचेंज की सुविधा चालू करने से, वेब पेज की परफ़ॉर्मेंस को बेहतर बनाने में मदद मिल सकती है. इससे आपकी साइट की वेबसाइट की परफ़ॉर्मेंस की अहम जानकारी पर असर पड़ सकता है. खास तौर पर, सबसे बड़े एलिमेंट को रेंडर करने में लगने वाला समय (एलसीपी) पर. Google Search, एसएक्सजी का इस्तेमाल शुरुआती तौर पर कर रहा है. इससे, खोज नतीजों वाले पेज से लोड होने वाले पेजों को तेज़ी से लोड करने में उपयोगकर्ताओं को मदद मिलती है.

Google Search, उपलब्ध होने पर एसएक्सजी को क्रॉल और कैश मेमोरी में सेव करता है. साथ ही, वह ऐसे एसएक्सजी को प्रीफ़ेच करता है जिन पर उपयोगकर्ता की जाने की संभावना होती है. उदाहरण के लिए, खोज के पहले नतीजे से जुड़ा पेज.

एसएक्सजी, परफ़ॉर्मेंस को ऑप्टिमाइज़ करने के अन्य तरीकों के साथ बेहतर तरीके से काम करता है. जैसे, सीडीएन का इस्तेमाल करना और रेंडर करने में रुकावट डालने वाले सब-रिसॉर्स को कम करना. लागू करने के बाद, एसएक्सजी को पहले से लोड करने से एलसीपी के फ़ायदे को बढ़ाने के लिए, इन सुझावों का पालन करें. कई मामलों में, इस तरह के ऑप्टिमाइज़ेशन की वजह से, Google Search से पेज तुरंत लोड हो सकता है:

साइन किए गए एक्सचेंज का असर

पिछले प्रयोगों से हमें पता चला है कि एसएक्सजी की मदद से प्रीफ़ेच करने की सुविधा से, एलसीपी में औसतन 300 से 400 मिलीसेकंड की कमी आई है. इससे साइटों को उपयोगकर्ताओं पर बेहतर पहली छाप छोड़ने में मदद मिलती है. साथ ही, अक्सर इसका कारोबार की मेट्रिक पर भी अच्छा असर पड़ता है.

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

  • Narcity ने एलसीपी को 41%तक बेहतर बनाया
  • Paper Magazine को हर उपयोगकर्ता के हिसाब से सेशन में 27% की बढ़ोतरी दिखी
  • MLT Blog पेज लोड होने में लगने वाले समय को 21%कम कर दिया

Cloudflare को पता चला है कि एसएक्सजी ने जिन 98% साइटों की जांच की है उनके लिए टीटीएफ़बी को बेहतर बनाया है. साथ ही, 85% साइटों के लिए एलसीपी को बेहतर बनाया है. एसएक्सजी की ज़रूरी शर्तें पूरी करने वाले पेज लोड में, औसतन 20% से ज़्यादा का सुधार हुआ है.

इंडेक्स करना

Google Search, किसी पेज के एसएक्सजी और नॉन-एसएक्सजी वर्शन को अलग-अलग रैंक या इंडेक्स नहीं करता. SXG, कॉन्टेंट को डिलीवर करने का एक तरीका है. इससे कॉन्टेंट में कोई बदलाव नहीं होता.

एएमपी

एसएक्सजी का इस्तेमाल करके, एएमपी कॉन्टेंट डिलीवर किया जा सकता है. एसएक्सजी की मदद से, एएमपी कॉन्टेंट को पहले से फ़ेच किया जा सकता है और उसे एएमपी यूआरएल के बजाय, कैननिकल यूआरएल का इस्तेमाल करके दिखाया जा सकता है.एएमपी में, एसएक्सजी जनरेट करने के लिए, अलग से टूल मौजूद होते हैं.amp.dev पर, साइन किए गए एक्सचेंज का इस्तेमाल करके एएमपी दिखाने का तरीका जानें.

Chrome DevTools की मदद से SXG को डीबग करना

एसएक्सजी को पहली बार देखने के लिए, Chromium ब्राउज़र का इस्तेमाल करें. इसके बाद, DevTools खोलें और नेटवर्क पैनल खोलें. इसके बाद, खोज के उदाहरण वाले इस पेज पर जाएं. हस्ताक्षर किए गए एक्सचेंज की पहचान करने के लिए, टाइप कॉलम में signed-exchange देखें.

DevTools के &#39;नेटवर्क&#39; पैनल में, एसएक्सजी अनुरोध दिखाने वाला स्क्रीनशॉट
DevTools में नेटवर्क पैनल

झलक टैब, SXG के कॉन्टेंट के बारे में ज़्यादा जानकारी देता है.

SXG के लिए &#39;झलक&#39; टैब का स्क्रीनशॉट
DevTools में झलक टैब

टूलिंग

एसएक्सजी लागू करने का मतलब है कि किसी दिए गए यूआरएल के लिए एसएक्सजी जनरेट करना और फिर अनुरोध करने वालों (आम तौर पर क्रॉलर) को वह एसएक्सजी दिखाना.

प्रमाणपत्र

एसएक्सजी जनरेट करने के लिए, आपके पास ऐसा सर्टिफ़िकेट होना चाहिए जिससे एसएक्सजी पर हस्ताक्षर किए जा सकें. हालांकि, कुछ टूल में ये सर्टिफ़िकेट अपने-आप मिल जाते हैं. इस पेज पर, सर्टिफ़िकेट देने वाली उन संस्थाओं की सूची दी गई है जो इस तरह का सर्टिफ़िकेट जारी कर सकती हैं. किसी भी एसीएमई क्लाइंट का इस्तेमाल करके, Google सर्टिफ़िकेट देने वाली संस्था से सर्टिफ़िकेट अपने-आप मिल सकते हैं. वेब पैकेजर सर्वर में पहले से मौजूद एसीएमई क्लाइंट है. sxg-rs में भी जल्द ही यह सुविधा उपलब्ध होगी.

प्लैटफ़ॉर्म के हिसाब से एसएक्सजी टूल

ये टूल, खास टेक्नोलॉजी स्टैक के साथ काम करते हैं. अगर पहले से ही किसी ऐसे प्लैटफ़ॉर्म का इस्तेमाल किया जा रहा है जिस पर इनमें से किसी एक टूल का इस्तेमाल किया जा सकता है, तो आपको सामान्य टूल के मुकाबले इसे सेट अप करना आसान लग सकता है.

अलग-अलग कामों के लिए इस्तेमाल किए जाने वाले एसएक्सजी टूल

sxg-rs एचटीटीपी सर्वर

sxg-rs http_server, एसएक्सजी दिखाने के लिए रिवर्स प्रॉक्सी के तौर पर काम करता है. एसएक्सजी क्रॉलर से मिलने वाले अनुरोधों के लिए, http_server बैकएंड से मिले रिस्पॉन्स पर हस्ताक्षर करेगा और एसएक्सजी के ज़रिए जवाब देगा. इंस्टॉल करने के निर्देशों के लिए, Readme देखें.

वेब पैकेजर सर्वर

वेब पैकेजर सर्वर, webpkgserver, Go में लिखे गए sxg-rs http_server का विकल्प है. वेब पैकेजर सर्वर को सेट अप करने के निर्देशों के लिए, वेब पैकेजर का इस्तेमाल करके, साइन किए गए एक्सचेंज को सेट अप करने का तरीका देखें.

वेब पैकेजर सीएलआई

वेब पैकेजर सीएलआई, दिए गए यूआरएल के हिसाब से एसएक्सजी जनरेट करता है.

webpackager \
    --private\_key=private.key \
    --cert\_url=https://example.com/certificate.cbor \
    --url=https://example.com

SXG फ़ाइल जनरेट होने के बाद, उसे अपने सर्वर पर अपलोड करें और application/signed-exchange;v=b3 MIME टाइप के साथ दिखाएं. इसके अलावा, आपको SXG सर्टिफ़िकेट को application/cert-chain+cbor के तौर पर दिखाना होगा.

SXG लाइब्रेरी

इन लाइब्रेरी का इस्तेमाल, अपना SXG जनरेटर बनाने के लिए किया जा सकता है:

  • sxg_rs, SXG जनरेट करने के लिए Rust लाइब्रेरी है. यह सबसे ज़्यादा सुविधाओं वाली एसएक्सजी लाइब्रेरी है. इसका इस्तेमाल cloudflare_worker और fastly_compute टूल के आधार के तौर पर किया जाता है.

  • libsxg, SXG जनरेट करने के लिए कम से कम C लाइब्रेरी है. इसका इस्तेमाल, NGINX SXG मॉड्यूल और Envoy SXG फ़िल्टर के आधार के तौर पर किया जाता है.

  • go/signed-exchange एक छोटी Go लाइब्रेरी है. इसे वेबपैकेज स्पेसिफ़िकेशन की मदद से उपलब्ध कराया जाता है. यह SXG जनरेट करने के रेफ़रंस के तौर पर लागू की जाती है. इसका इस्तेमाल, रेफ़रंस सीएलआई टूल, gen-signedexchange और ज़्यादा सुविधाओं वाले वेब पैकेजर टूल के आधार के तौर पर किया जाता है.

कॉन्टेंट के लिए बातचीत

जब Accept हेडर से पता चलता है कि application/signed-exchange के लिए q-value, text/html के लिए q-value से ज़्यादा या उसके बराबर है, तो सर्वर को एसएक्सजी दिखाना चाहिए. इसका मतलब है कि कोई ऑरिजिन सर्वर, क्रॉलर को एसएक्सजी दिखाएगा, लेकिन ब्राउज़र को नहीं. ऊपर दिए गए कई टूल, ऐसा डिफ़ॉल्ट रूप से करते हैं. हालांकि, अन्य टूल के लिए, उन अनुरोधों के 'स्वीकार करें' हेडर से मैच करने के लिए, यहां दी गई रेगुलर एक्सप्रेशन का इस्तेमाल किया जा सकता है जिन्हें SXG के तौर पर दिखाया जाना चाहिए: http Accept: /(^|,)\s\*application\/signed-exchange\s\*;\s\*v=[[:alnum:]\_-]+\s\*(,|$)/

इस सुझाव में Apache और nginx के उदाहरण शामिल हैं.

Update cache API

Google SXG कैश में एक एपीआई होता है. इसका इस्तेमाल करके, साइट के मालिक Cache-Control: max-age की वजह से एक्सपायर होने से पहले, कैश मेमोरी से एसएक्सजी हटा सकते हैं. ज़्यादा जानकारी के लिए, कैश मेमोरी अपडेट करने वाले एपीआई का रेफ़रंस देखें.

SXG से लिंक करना

कोई भी साइट, और टैग का इस्तेमाल करके, उन पेजों के एसएक्सजी को कैश मेमोरी में सेव कर सकती है, दिखा सकती है, और प्रीफ़ेच कर सकती है जिनसे वह लिंक होती है. हालांकि, ऐसा सिर्फ़ तब किया जा सकता है, जब वे पेज उपलब्ध हों: html <a href="https://example.com/article.html.sxg"> <link rel="prefetch" as="document" href="https://example.com/article.html.sxg"> इस लेख में, एसएक्सजी को डिस्ट्रिब्यूट करने के लिए nginx का इस्तेमाल करने का तरीका बताया गया है.

खास फ़ायदे

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

विज्ञापन दिखाने के लिए कम अनुरोध

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

  • SXG को कैश मेमोरी में सेव किया जाता है और उपयोगकर्ताओं को तब तक भेजा जा सकता है, जब तक उनकी समयसीमा खत्म नहीं हो जाती. इसलिए, कई प्रीफ़ेच को सिर्फ़ कैश मेमोरी सर्वर मैनेज कर सकता है.
  • एसएक्सजी, आपकी साइट पर कुकी के साथ और बिना कुकी के, दोनों तरह के उपयोगकर्ताओं को दिखाए जा सकते हैं. इसलिए, नेविगेशन के बाद पेज को फिर से फ़ेच करने की ज़रूरत कम होती है.

पेज स्पीड को बेहतर बनाना

फ़िलहाल, पेज को पहले से लोड करने की सुविधा और उससे जुड़ी सुविधाओं की वजह से, आपको पेज की स्पीड में और भी बढ़ोतरी दिख सकती है:

  • एसएक्सजी, आपकी साइट के लिए कुकी सेव करने वाले उपयोगकर्ताओं को दिखाए जा सकते हैं.
  • Link हेडर का इस्तेमाल करके बताए जाने पर, SXG आपके पेजों के लिए सब-रिसॉर्स भी पहले से लोड कर लेता है. जैसे, JavaScript, सीएसएस, फ़ॉन्ट, और इमेज.
  • आने वाले समय में, Google Search से एसएक्सजी प्रीफ़ेच करने की सुविधा, खोज के नतीजों के ज़्यादा टाइप पर उपलब्ध होगी.

नतीजा

हस्ताक्षर किए गए एक्सचेंज, डिलीवरी का एक तरीका है. इसकी मदद से, किसी संसाधन के मूल और मान्य होने की पुष्टि की जा सकती है. भले ही, संसाधन को किसी भी तरीके से डिलीवर किया गया हो. इस वजह से, तीसरे पक्ष के लोग या कंपनियां, पब्लिशर के एट्रिब्यूशन को बनाए रखते हुए, SXGs को डिस्ट्रिब्यूट कर सकती हैं.

इसके बारे में और पढ़ें