जानें कि तीसरे पक्ष के संसाधनों को तेज़ी से लोड करने से रेवेन्यू कैसे बढ़ सकता है.
इस केस स्टडी में बताया गया है कि तीसरे पक्ष के संसाधनों की परफ़ॉर्मेंस को बेहतर बनाने से, कारोबार की मेट्रिक को कैसे बेहतर बनाया जा सकता है. पिछली स्टडी में, विज्ञापनों के लोड होने में लगने वाले समय की लागत का आकलन किया गया था. वहीं, इस स्टडी में असल दुनिया में परफ़ॉर्मेंस में हुए सुधार की वैल्यू के बारे में बताया गया है:
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 Display Network में दिखने वाले विज्ञापनों की केस स्टडी
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% सैंपल (कंट्रोल ग्रुप) को लॉग किया. Google डिसप्ले विज्ञापन के 5.2 अरब इंप्रेशन के सैंपल साइज़ से लॉग की गई मेट्रिक के दो हफ़्तों के दौरान, कंट्रोल ग्रुप ने ये निष्कर्ष निकाले:
- विज्ञापन इंप्रेशन में 0.3% की बढ़ोतरी.
- रेवेन्यू में 0.5% की बढ़ोतरी हुई.
- विज्ञापन स्क्रिप्ट के शुरुआती लोड में 2% की बढ़ोतरी (<500ms पेज लोड की शुरुआत से).
- विज्ञापन स्क्रिप्ट के लोड होने की दर में कुल 1.1% की बढ़ोतरी हुई.
ऊपर दिए गए चार्ट में दिखाया गया है कि इस एक्सपेरिमेंट के नतीजों को, विज्ञापन स्क्रिप्ट लोड होने की संख्या में हुई बढ़ोतरी के लिए जिम्मेदार ठहराया जा सकता है. ज़्यादातर विज्ञापन स्क्रिप्ट, पेज लोड होने की प्रोसेस के शुरुआती दौर में लोड होती हैं.
अपनी साइट पर, 'पुनरीपुष्टि करते समय पुरानी जानकारी दिखाना' सुविधा लागू करना
GPT टीम ने देखा है कि stale-while-revalidate
की मदद से एचटीटीपी हेडर में आसानी से बदलाव करने से, स्पीड बेहतर हो सकती है और कारोबार की मेट्रिक में बढ़ोतरी हो सकती है. अपनी साइट पर stale-while-revalidate
लागू करने के बारे में ज़्यादा जानने के लिए, 'पुनरी पुष्टि करते समय पुराने डेटा का इस्तेमाल करना' सुविधा की मदद से, डेटा को अप-टू-डेट रखना पोस्ट देखें.