पेंट होल्डिंग - एक ही ऑरिजिन वाले नेविगेशन पर सफ़ेद के फ़्लैश को कम करना

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

हालांकि, बहुत तेज़ी से लोड होने वाले पेजों के लिए, यह तरीका वाकई उपयोगकर्ता के अनुभव को नुकसान पहुंचाता है. नीचे दिए गए ऐनिमेशन में, आपको एक उदाहरण दिखेगा कि आज के समय में यह कैसा दिखता है.

हम इस वेबसाइट के बहुत बड़े प्रशंसक हैं और साइट की क्वालिटी को झंझट से दूर, यह हमारे काम का नहीं है. हम इसे ठीक करना चाहते थे. हमने पेंट होल्डिंग नाम के एक नए तरीके से किया, जिसमें ब्राउज़र पेंट शुरू करने से पहले थोड़ी देर इंतज़ार करता है, खास तौर पर तब, जब पेज ज़रूरत के मुताबिक तेज़ी से लोड होता हो. इससे यह पक्का होता है कि पेज पूरी तरह से रेंडर होकर, वाकई झटपट शानदार अनुभव देता है.

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

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

Chrome Canary (Chrome 76) में Paint Holding की सुविधा आज़माएं और हमें अपनी राय दें. डेवलपर को इसका फ़ायदा उठाने के लिए अपने पेजों में कोई भी बदलाव करने के बारे में चिंता करने की ज़रूरत नहीं होनी चाहिए.