इस केस स्टडी में बताया गया है कि तीसरे पक्ष के संसाधनों की परफ़ॉर्मेंस को बेहतर बनाकर, कारोबार की मेट्रिक को कैसे बढ़ाया जा सकता है. पिछली स्टडी में, विज्ञापन दिखाने में लगने वाले अतिरिक्त समय की लागत का आकलन किया गया था. हालांकि, इस स्टडी में परफ़ॉर्मेंस में हुए सुधार की वैल्यू के बारे में बताया गया है:
0.5%
पब्लिशर के रेवेन्यू में बढ़ोतरी
2%
विज्ञापन स्क्रिप्ट को जल्दी लोड करने की सुविधा में बढ़ोतरी
सोर्स: Google का इंटरनल डेटा, जून से जुलाई 2019.
बैकग्राउंड
Google पब्लिशर टैग (GPT), Google Ad Manager के लिए विज्ञापन टैगिंग स्क्रिप्ट है. यह वेब पर डिसप्ले विज्ञापनों का अनुरोध करती है और उन्हें रेंडर करती है. GPT के लिए stale-while-revalidate एचटीटीपी हेडर लागू करके, GPT टीम ने पब्लिशर पार्टनर के लिए Google डिसप्ले विज्ञापनों की स्पीड और परफ़ॉर्मेंस को बेहतर बनाया. इस तकनीक का इस्तेमाल किसी भी ऐसे अन्य मामले में किया जा सकता है जहां सबसे नए कोड को लोड करने के बजाय, स्क्रिप्ट को जल्द से जल्द लोड करना ज़्यादा ज़रूरी हो.
समस्या
GPT को बूटस्ट्रैपिंग स्क्रिप्ट gpt.js के तौर पर डिप्लॉय किया जाता है. इसे 15 मिनट का टीटीएल (टाइम टू लिव) दिया जाता है. टीटीएल कम होने से, स्क्रिप्ट को जल्दी अपडेट या पहले जैसा किया जा सकता है. लोड होने के बाद, gpt.js अनुरोध करता है और लागू करने के लिए अतिरिक्त स्क्रिप्ट लोड करता है. इनका टीटीएल ज़्यादा होता है.
टीटीएल के 15 मिनट पूरे होने के बाद, कैश मेमोरी में मौजूद gpt.js का वर्शन पुराना हो जाता है. इसलिए, इसकी पुष्टि फिर से करनी पड़ती है. पहले, फिर से पुष्टि करने की इस प्रोसेस में, स्क्रिप्ट की नई कॉपी पाने के लिए सिंक्रोनस नेटवर्क अनुरोध किया जाता था. इससे विज्ञापन दिखाने के पहले अनुरोध में देरी होती थी.
समाधान
stale-while-revalidate एट्रिब्यूट का इस्तेमाल Cache-Control हेडर करता है. यह एक अतिरिक्त समयावधि तय करता है. इस दौरान, कैश मेमोरी में सेव की गई पुरानी ऐसेट का इस्तेमाल किया जा सकता है. हालांकि, इस दौरान ऐसेट की पुष्टि एसिंक्रोनस तरीके से की जाती है. इससे डेवलपर को दो चीज़ों के बीच संतुलन बनाने में मदद मिलती है: कैश मेमोरी में सेव किए गए कॉन्टेंट को तुरंत लोड करना और यह पक्का करना कि कैश मेमोरी में सेव किए गए कॉन्टेंट के अपडेट का इस्तेमाल आने वाले समय में किया जाए.
Google डिसप्ले विज्ञापनों की केस स्टडी
GPT टीम ने 2016 में, gpt.js एचटीटीपी रिस्पॉन्स में यह Cache-Control हेडर जोड़ा था. ऐसा इसलिए किया गया था, ताकि ब्राउज़र stale-while-revalidate को लागू कर सकें:
cache-control: private, max-age=900, stale-while-revalidate=3600
इस सेटिंग का मतलब है कि अगर पिछली कैश मेमोरी में सेव की गई वैल्यू के 15 से 60 मिनट के बीच gpt.js का अनुरोध किया जाता है, तो अनुरोध को पूरा करने के लिए कैश मेमोरी में सेव की गई वैल्यू का इस्तेमाल किया जाएगा. भले ही, वह पुरानी हो. साथ ही, बैकग्राउंड में फिर से पुष्टि करने का अनुरोध किया जाएगा, ताकि कैश मेमोरी में नई वैल्यू भरी जा सके. इससे आने वाले समय में इसका इस्तेमाल किया जा सकेगा.
Chrome ने stale-while-revalidate को 75वें वर्शन में लॉन्च किया था. इसे 99% ट्रैफ़िक के लिए उपलब्ध कराया गया था. हालांकि, 1% ट्रैफ़िक के लिए इसे कुछ समय के लिए बंद कर दिया गया था, ताकि इसके असर का आकलन किया जा सके. विज्ञापन स्क्रिप्ट के लिए stale-while-revalidate की परफ़ॉर्मेंस को टेस्ट करने के लिए, GPT टीम ने इस 1% (एक्सपेरिमेंट ग्रुप) के साथ-साथ, सुविधा चालू होने पर 1% ट्रैफ़िक (कंट्रोल ग्रुप) से मेट्रिक लॉग कीं. दो हफ़्तों तक, 520 करोड़ Google डिसप्ले विज्ञापन इंप्रेशन के सैंपल साइज़ से लॉग की गई मेट्रिक के आधार पर, कंट्रोल ग्रुप ने यह देखा:
- विज्ञापन इंप्रेशन में 0.3% की बढ़ोतरी हुई.
- रेवेन्यू में 0.5% की बढ़ोतरी हुई.
- विज्ञापन स्क्रिप्ट के शुरुआती लोड में 2% की बढ़ोतरी हुई है. यह पेज लोड होने के 500 मि॰से॰ से कम समय में हुआ है.
- विज्ञापन स्क्रिप्ट के लोड होने की दर में 1.1% की बढ़ोतरी हुई.
चार्ट में दिखाए गए नतीजों के मुताबिक, इस एक्सपेरिमेंट के नतीजे, विज्ञापन स्क्रिप्ट के लोड होने की संख्या में हुई बढ़ोतरी की वजह से मिले हैं. इनमें से ज़्यादातर स्क्रिप्ट, पेज लोड होने की प्रोसेस की शुरुआत में लोड हुई हैं.
अपनी साइट पर stale-while-revalidate लागू करना
GPT टीम ने देखा है कि stale-while-revalidate के साथ एचटीटीपी हेडर में थोड़ा सा बदलाव करने से, स्पीड को बेहतर बनाया जा सकता है और कारोबार की मेट्रिक को बढ़ाया जा सकता है. अपनी साइट पर stale-while-revalidate लागू करने के बारे में ज़्यादा जानने के लिए, stale-while-revalidate की मदद से कॉन्टेंट को अप-टू-डेट रखना लेख पढ़ें.