पब्लिश किया गया: 20 जनवरी, 2025
Chrome 133 (फ़रवरी 2025) से, एनर्जी सेवर मोड चालू होने पर, ज़्यादा सीपीयू का इस्तेमाल करने वाले बैकग्राउंड टैब को फ़्रीज़ कर दिया जाएगा. इसका मकसद, उन उपयोगकर्ताओं के लिए बैटरी खपत को कम करना है जो एनर्जी सेवर मोड का इस्तेमाल करते हैं और जिनके लिए बैटरी लाइफ़ का हर प्रतिशत अहम होता है. रुकावट को कम करने के लिए, सिर्फ़ उन बैकग्राउंड टैब को फ़्रीज़ किया जाएगा जो तय शर्तें पूरी करते हैं और जिनमें सीपीयू का ज़्यादा इस्तेमाल होता है.
फ़्रीज़िंग क्या है?
फ़्रीज़ करने पर, वेब पेज पर टास्क पूरा होने की प्रोसेस रोक दी जाती है. इसमें इस तरह का कॉन्टेंट शामिल है:
- इवेंट हैंडलर (उदाहरण के लिए, इनपुट, नेटवर्क, और सेंसर)
- टाइमर
- प्रॉमिस रिज़ॉल्वर
फ़्रीज़ करना, मिटाने से अलग है. मिटाने पर, टैब को मेमोरी से अनलोड कर दिया जाता है. जब किसी फ़्रीज़ किए गए टैब पर फिर से फ़ोकस किया जाता है, तो वह अपने-आप अनफ़्रीज़ हो जाता है. साथ ही, सूची में मौजूद सभी टास्क, उनकी स्थिति में कोई बदलाव किए बिना पूरे हो जाते हैं.
जब कोई पेज फ़्रीज़ या फिर से शुरू किया जाता है, तब फ़्रीज़ और फिर से शुरू करने के इवेंट भेजे जाते हैं (पेज लाइफ़साइकल एपीआई दस्तावेज़ देखें). इन इवेंट की मदद से, पेज पर इस्तेमाल नहीं किए जा रहे रिसॉर्स को रिलीज़ किया जा सकता है. साथ ही, सर्वर को यह सूचना दी जा सकती है कि पेज को रोक दिया गया है या मेट्रिक रिकॉर्ड की जा सकती हैं.
किन पेजों को फ़्रीज़ किया जा सकता है?
फ़्रीज़ करने की सुविधा, ब्राउज़िंग कॉन्टेक्स्ट ग्रुप पर काम करेगी.
आम तौर पर, ब्राउज़िंग कॉन्टेक्स्ट ग्रुप में एक टैब होता है. हालांकि, window.open()
जैसे एपीआई का इस्तेमाल करने पर, एक से ज़्यादा टैब एक ही ग्रुप से जुड़े हो सकते हैं.
एनर्जी सेवर मोड चालू होने पर, ब्राउज़िंग कॉन्टेक्स्ट ग्रुप को तब फ़्रीज़ कर दिया जाएगा, जब वह इन शर्तों को पूरा करता हो:
- ग्रुप के सभी पेज पांच मिनट से ज़्यादा समय से छिपे हुए हैं और उन पर कोई गतिविधि नहीं हुई है.
- ग्रुप में मौजूद, एक ही ऑरिजिन वाले फ़्रेम का कोई भी सबग्रुप "सीपीयू का ज़्यादा इस्तेमाल करता है."
- ग्रुप में ये काम नहीं किए जा सकते:
- ऑडियो या वीडियो कॉन्फ़्रेंसिंग की सुविधा उपलब्ध कराएं. इसे माइक्रोफ़ोन, कैमरा, स्क्रीन/विंडो/टैब कैप्चर या 'ओपन' RTCDataChannel या 'लाइव' MediaStreamTrack वाले RTCPeerConnection का इस्तेमाल करके पता लगाया जाता है.
- किसी बाहरी डिवाइस को कंट्रोल करना (Web USB, Web ब्लूटूथ, Web एचआईडी या Web सीरियल का इस्तेमाल करके डिटेक्ट किया गया).
- वेब लॉक या IndexedDB कनेक्शन को होल्ड करें, जो ग्रुप के बाहर की कार्रवाइयों को ब्लॉक करता है.
"ज़्यादा सीपीयू का इस्तेमाल करने वाले" ऐप्लिकेशन की परिभाषा में बदलाव हो सकता है. हालांकि, इसका मकसद, बेहतर तरीके से लागू किए गए ईमेल या चैट क्लाइंट या सूचनाएं जनरेट करने वाले कैलेंडर ऐप्लिकेशन को बाहर रखना है.
एक ही ब्राउज़िंग कॉन्टेक्स्ट ग्रुप में मौजूद सभी टैब को एक साथ फ़्रीज़ करने से, उन ऐप्लिकेशन के लिए रुकावट कम हो जाती है जो पॉप-अप का इस्तेमाल करते हैं. जैसे, मैसेज लिखने या क्रेडेंशियल डालने के लिए.
मैं अपनी साइट को कैसे तैयार करूं?
अगर आपकी साइट में बैकग्राउंड में काम करने वाली सुविधाएं (जैसे, सूचनाएं, फ़ाइल अपलोड करना या कॉन्टेंट रीफ़्रेश करना) नहीं हैं, तो हो सकता है कि फ़्रीज़ होने से उस पर कोई असर न पड़े.
अगर आपकी साइट में बैकग्राउंड में काम करने की सुविधा है, तो बैकग्राउंड में सीपीयू के इस्तेमाल को कम करें. इससे, आपकी साइट को सीपीयू का ज़्यादा इस्तेमाल करने वाली साइट नहीं माना जाएगा और उसे फ़्रीज़ नहीं किया जाएगा. यहां कुछ सुझाव दिए गए हैं:
- समय-समय पर स्थिति में होने वाले बदलावों की जांच के लिए, टाइमर का इस्तेमाल न करें.
- जब कोई एलिमेंट व्यूपोर्ट में आता है, तो उसका पता लगाने के लिए, IntersectionObserver का इस्तेमाल करें.
- एलिमेंट के साइज़ में हुए बदलावों का पता लगाने के लिए, ResizeObserver का इस्तेमाल करें.
- डीओएम में होने वाले बदलावों के लिए, MutationObserver या कस्टम एलिमेंट लाइफ़साइकल कॉलबैक का इस्तेमाल करें.
- पोलिंग सर्वर के बजाय, वेब स्लॉट, सर्वर से भेजे गए इवेंट, पुश मैसेज या फ़ेच स्ट्रीम का इस्तेमाल करें.
- ऑडियो या वीडियो में होने वाले बदलावों के लिए, timeupdate और ended जैसे इवेंट का इस्तेमाल करें.
हमारा यह भी सुझाव है कि बैकग्राउंड में काम करने वाली सुविधाओं को सेवा वर्कर पर माइग्रेट करें, ताकि फ़्रीज़ होने से उन पर कोई असर न पड़े. फ़्रीज़ होने से न तो सेवा वर्कर पर असर पड़ता है और न ही उसे ब्राउज़र के कम रिसॉर्स की ज़रूरत पड़ती है. इनका इस्तेमाल करें:
- सूचनाओं के लिए Push API
- अपडेट पाने के लिए, Background Synchronization API या Web Periodic Background Synchronization API.
साइटें, BackgroundPageFreezeOptOut ऑरिजिन ट्रायल में हिस्सा लेकर, फ़्रीज़ होने की सुविधा से ऑप्ट आउट कर सकती हैं. बैकग्राउंड में होने वाले अहम काम की जानकारी देने के लिए नए एपीआई रिलीज़ होने के बाद, यह ट्रायल बंद कर दिया जाएगा. उदाहरण के लिए, प्रगति की सूचना देने वाला एपीआई.
chrome://discards
पर जाकर, यह देखा जा सकता है कि किसी टैब को फ़्रीज़ किया जा सकता है या नहीं. ध्यान दें कि अगर कोई टैब फ़्रीज़ करने की ज़रूरी शर्तें पूरी करता है, तब भी Chrome 133 उसे सिर्फ़ तब फ़्रीज़ करेगा, जब वह सीपीयू का ज़्यादा इस्तेमाल करता हो और एनर्जी सेवर मोड चालू हो.
आगे क्या करना है?
बैकग्राउंड टैब फ़्रीज़ करने से बैटरी बचती है. यह सुविधा, एनर्जी बचत करने की सुविधा चालू करने वाले लोगों के लिए ज़रूरी है.
इससे फ़ोरग्राउंड टैब की परफ़ॉर्मेंस भी बेहतर होती है. साथ ही, सीपीयू के इस्तेमाल और मेमोरी ऐक्सेस को कम करके, बैकग्राउंड टैब के बंद होने से बचाने में मदद मिलती है. ऐसा खास तौर पर, संसाधनों की कमी वाले डिवाइसों पर होता है. इसलिए, Chrome टैब को फ़्रीज़ करने की सुविधा को ज़्यादा स्थितियों में उपलब्ध कराएगा. बदलावों के बारे में blink-dev@chromium.org पर एलान किया जाएगा. बैकग्राउंड में इस्तेमाल के उदाहरणों में कम से कम रुकावट डालने के लिए, Progress Notification API जैसे नए एपीआई की मदद से, पेजों को बैकग्राउंड में किए जा रहे अहम काम के बारे में बताने और फ़्रीज़ होने से रोकने की सुविधा मिलेगी.