Chrome में टैब खारिज होना - मेमोरी बचाने वाला प्रयोग

एडी ओस्मानी
एडी ओस्मानी

Chrome के मेमोरी फ़ुटप्रिंट को कम करना इस साल की टीम की सबसे बड़ी प्राथमिकताओं में से एक है. हमने पहले ही Gmail के मेमोरी इस्तेमाल में 45% तक की कमी देखी है. यह कमी V8 के गारबेज कलेक्शन प्रोसेस में हुए सुधार की वजह से है, लेकिन यह तो बस शुरुआत है. मेमोरी के इस्तेमाल से जुड़े हमारे अगले प्रयोगों में से एक है, टैब होर्डर (मेरी तरह) को टारगेट करने के लिए. इसे टैब खारिज करना कहते हैं.

खुले हुए सभी टैब, इस्तेमाल किए जा चुके टैब नहीं होते. अगर मेमोरी कम हो, तो Chrome दिलचस्प बैकग्राउंड टैब को हटा सकता है.

टैब खारिज करने की सुविधा, Chrome 46 और उसके बाद के वर्शन में प्रयोग के तौर पर उपलब्ध है.

बैकग्राउंड

आम तौर पर, हर टैब को रेंडर करने की प्रोसेस में करीब 50 एमबी का समय लगता है. हालांकि, ज़्यादातर लोग एक समय में सिर्फ़ एक टैब का इस्तेमाल करते हैं. अगर आपने 10 टैब खोले हुए हैं, तो आपके बैकग्राउंड टैब की स्थिति को बनाए रखने के लिए कम से कम 450 एमबी मेमोरी खर्च हो रही है. समय के साथ यह काम थोड़ा मुश्किल हो सकता है.

हर टैब के लिए मेमोरी की ज़रूरत होती है

हमारा एक लक्ष्य यह है कि जिन टैब का इस्तेमाल आप नहीं कर रहे हैं, उनके लिए इस्तेमाल होने वाली मेमोरी को कम करना. 'Chrome टास्क मैनेजर' में कौनसे टैब मेरी सिस्टम मेमोरी का इस्तेमाल कर रहे हैं, यह देखने का मतलब है कि नीचे दी गई साइटों में से एक या दो साइटों का 'इस्तेमाल' किया जा रहा है. जबकि, बैकग्राउंड में चल रहे दूसरे टैब का इस्तेमाल नहीं किया जा रहा है.

मेमोरी ज़रूरी है टास्क मैनेजर

टैब खारिज करने से, मेमोरी के इस्तेमाल को कम किया जा सकता है.

इस्तेमाल नहीं हो रहे टैब खारिज किए जा रहे हैं

टैब खारिज करने की सुविधा से, जब यह पता चलता है कि सिस्टम की मेमोरी बहुत कम हो रही है, तो Chrome उन टैब को अपने-आप खारिज कर देता है जिनमें आपकी दिलचस्पी नहीं है. खारिज करने का क्या मतलब है? वैसे, खारिज किया गया टैब कहीं नहीं चलता. हम उसे मार देते हैं, लेकिन वह अब भी Chrome टैब बार पर दिखाई देता है. अगर किसी ऐसे टैब पर वापस जाया जाता है जो खारिज कर दिया गया है, तो क्लिक करने पर वह फिर से लोड हो जाएगा. फ़ॉर्म कॉन्टेंट, स्क्रोल की रैंक वगैरह उसी तरह सेव और वापस लाई जाती हैं जिस तरह आगे/पीछे वाले टैब नेविगेशन के दौरान होती है.

हमारे पास एक और नई सुविधा भी है, जो सभी टैब संसाधनों को स्थानीय रूप से कैश मेमोरी में सेव करने की अनुमति देती है. यह आपके ऑफ़लाइन होने पर टैब खारिज करने की सुविधा के साथ बढ़िया काम करती है. इस टैब के फिर से चालू होने पर, हम आपको कैश मेमोरी में सेव किए गए उस वर्शन को फिर से लोड करने का विकल्प देते हैं जो नेटवर्क पर पहले लोड किया गया था. कैश मेमोरी से पेज फिर से लोड करने की सुविधा चालू करने के लिए, chrome://flags/#show-saved-copy में जाकर दूसरा प्रयोग आज़माएं.

टैब को आज ही खारिज करने की सुविधा को आज़माने के लिए, chrome://flags/#enable-tab-discarding के ज़रिए इसे चालू करें और Chrome को फिर से लॉन्च करें. एक ही Chrome chrome://flags पेज से यह कंट्रोल किया जा सकता है कि उसे चालू या बंद किया जाए या नहीं.

टैब खारिज करने का स्क्रीनशॉट चालू करें.
'फिर से लॉन्च करें' बटन का स्क्रीनशॉट.

chrome://discards नाम के नए पेज की मदद से, आपको यह लिस्ट करने की सुविधा मिलती है कि फ़िलहाल कौनसे टैब खुले हैं. साथ ही, हम इस बारे में अहम जानकारी शेयर करने की कोशिश करते हैं कि वे आपके लिए कितने दिलचस्प हैं.

खारिज किए गए टैब पेज का स्क्रीनशॉट.

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

खारिज किए गए टैब के उदाहरण का स्क्रीनशॉट.

टैब खारिज करने से, टैब इस क्रम में हटाए जाते हैं:

  • अंदरूनी पेज, जैसे कि नया टैब पेज, बुकमार्क वगैरह.
  • काफ़ी समय पहले चुने गए टैब
  • हाल ही में चुने गए टैब
  • विंडो में चल रहे ऐप्लिकेशन
  • पिन करके छोटे किए गए टैब
  • चुना गया टैब

हमने Windows और Mac OS के लिए, Chrome कैनरी में टैब खारिज करने का प्रयोग चालू कर दिया है. जल्द ही Linux को लागू किया जाएगा.

किसी टैब को खारिज करना है या नहीं, यह तय करते समय पिन किए गए टैब पर भी ध्यान दिया जाता है

प्रेरणा: नमस्ते, शानदार सस्पेंडर

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

सस्पेंडर स्क्रीनशॉट.

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

निलंबित टैब के फ़ेविकॉन का स्क्रीनशॉट.

बैकग्राउंड में जिन टैब का इस्तेमाल मैं सक्रिय रूप से नहीं कर रहा/रही उन्हें मेमोरी में सेव करते हुए निलंबित कर दिया गया है. हालांकि, मैं जिन टैब (GitHub और YouTube) का अब भी इस्तेमाल कर रहा/रही हूं वे अब भी सामान्य तरीके से चल रहे हैं.

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

आने वाले समय में किए जाने वाले सुधार: टैब सीरियलाइज़र

टैब सीरियलाइज़र काम का एक भविष्य है. हमारे हिसाब से टैब खारिज करने के हमारे मौजूदा तरीके में काफ़ी सुधार किए जा सकते हैं. यह Chrome टैब का कॉन्टेंट लेता है और उसकी *मौजूदा* स्थिति को बाइनरी ब्लॉब में बदल देता है. इस बाइनरी ब्लॉब को बाद में टैब में बंद किया जा सकता है.

सीरियलाइज़र, Chrome, Blink, और V8 के साथ काम करने वाली हर उस चीज़ को सीरियलाइज़ करेगा जिसकी ज़रूरत सीरियलाइज़ेशन में, इस तरह के सामान्य संदिग्ध हमले शामिल होंगे: DOM (इसमें बड़ी संख्या में WebGL और कैनवस शामिल हैं), सीएसएस, और V8 JavaScript VM की स्थिति.

Serializer के कॉन्सेप्ट का स्क्रीनशॉट

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

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

टैब खारिज करने की सुविधा को आज़माएं और हमें अपनी राय दें

हमें यह जानकर खुशी होगी कि यह सुविधा आपके काम की है या नहीं. साथ ही, इसे बेहतर बनाने का तरीका भी बताया गया है. इसे आज़माएं, इसके साथ खेलें (खास तौर पर अगर आप टैब का ढेर लगाने वाले हैं!) और टिप्पणियों में हमें अपने अनुभव के बारे में बताएं. :) अगर आप किसी भी गड़बड़ी के लिए crbug.com पर टिकट दर्ज करते हैं, तो हमें ज़रूर खुशी होगी.