पृष्ठभूमि टैब का ब्राउज़र प्रदर्शन पर नाटकीय नकारात्मक प्रभाव पड़ सकता है, बैटरी लाइफ़ पर काफ़ी ज़्यादा असर पड़ता है. इसे कम करने के लिए, Chrome पिछले कुछ सालों से बैकग्राउंड टैब पर लगी कई तरह की पाबंदियां लगी हैं. हाल ही में, इसे और बेहतर बनाने के लिए कई कोशिशें की गई हैं, और यह दस्तावेज़ Chrome की नीति के बारे में खास जानकारी देता है. इस दस्तावेज़ में, Chrome 57 की मौजूदा नीतियों के बारे में बताया गया है. लंबी अवधि के लिए रणनीति और आगे के प्लान यहां देखे जा सकते हैं यह दस्तावेज़ पढ़ें.
किसी ऐप्लिकेशन को बैकग्राउंड के लिए ऑप्टिमाइज़ करना
वेब डेवलपर को पता होना चाहिए कि उपयोगकर्ताओं के बैकग्राउंड में अक्सर बहुत से टैब खुले रहते हैं और इसका पावर उपयोग और बैटरी लाइफ पर गंभीर प्रभाव पड़ सकता है. बैकग्राउंड में काम करना कम से कम रखा जाना चाहिए. हालांकि, ऐसा करना तब ही ज़रूरी है, जब उपयोगकर्ता अनुभव को बेहतर बनाने के लिए किया जा सकता है. कॉन्टेंट बनाने पेज विज़िबिलिटी एपीआई इस्तेमाल किया जाना चाहिए का इस्तेमाल करें, ताकि यह पता लगाया जा सके कि पेज कब बैकग्राउंड में है. साथ ही, विज़ुअल अपडेट जैसे सभी ग़ैर-ज़रूरी काम को निलंबित कर दें.
कुछ साइटों के लिए, इस आसान ऑप्टिमाइज़ेशन से सीपीयू के इस्तेमाल में 75% तक की कमी आ सकती है:
var doVisualUpdates = true;
document.addEventListener('visibilitychange', function(){
doVisualUpdates = !document.hidden;
});
function update() {
if (!doVisualUpdates) {
return;
}
doStuff();
}
नीतियां
requestAnimationFrame()
दस्तावेज़ों के मुताबिक,
अगर कोई पेज बैकग्राउंड में है, तो Chrome requestAnimationFrame()
को कॉल नहीं करता.
यह व्यवहार 2011 से ही लागू है.
बैकग्राउंड टाइमर अलाइनमेंट
Chrome 11 के बाद से, हर इंडिपेंडेंट टाइमर, एक सेकंड में एक से ज़्यादा बार नहीं चलता है. Chrome इन टाइमर को बैच में चलाता है एक सेकंड में एक बार, यह पक्का करना कि प्रोसेस वेकअप की संख्या कम से कम रखी जाए. जिन पेजों का ऑडियो सुनाई देता है उन्हें बैकग्राउंड टाइमर की पाबंदी नहीं माना जाता. इन पेजों पर उपयोगकर्ता को वीडियो दिखता है थ्रॉटलिंग. अनुमति देने के लिए ऑडियो चलना बंद हो जाने के बाद कुछ सेकंड तक छूट जारी रहती है का इस्तेमाल करें.
ध्यान दें कि ऑडियो को तभी सुना जा सकता है, जब Chrome सिर्फ़ ऑडियो आइकॉन दिखाता है. बिना आवाज़ वाली ऑडियो स्ट्रीम के लिए, छूट नहीं मिलती.
बजट के हिसाब से, बैकग्राउंड में टाइमर को थ्रॉटलिंग करना
Chrome 57 में उपलब्ध है, बजट के आधार पर टाइमर को थ्रॉटल करने की सुविधा, टाइमर अलाइनमेंट के तरीके का एक और वर्शन है. इससे, बैकग्राउंड में टाइमर के सीपीयू इस्तेमाल पर एक और सीमा तय की जाती है. यह इस तरह से काम करता है:
- बैकग्राउंड में टाइमर चलाने के लिए, हर बैकग्राउंड टैब का एक समय बजट (सेकंड में) होता है.
- बैकग्राउंड में 10 सेकंड के बाद, पेज पर समय बजट की सीमाएं लागू होती हैं.
- टाइमर टास्क सिर्फ़ तब चलाया जा सकता है, जब समय का बजट नेगेटिव न हो.
- टाइमर के पूरा होने के बाद, उसके चलने के समय को बजट से घटा दिया जाता है.
- समय के साथ बजट लगातार जनरेट होता रहता है. फ़िलहाल, यह दर 0.01 सेकंड प्रति सेकंड पर सेट है. ध्यान दें कि बजट फिर से जनरेट होने की दर में बदलाव किया जा सकता है, क्योंकि Chrome, ट्रॉथलिंग व्यवहार के बारे में ज़्यादा डेटा इकट्ठा करता है.
इस थ्रॉटलिंग से कई चीज़ें अपने-आप छूट जाती हैं:
- ऑडियो चलाने वाले ऐप्लिकेशन को फ़ोरग्राउंड में माना जाता है और उन्हें थ्रॉटल नहीं किया जाता.
- रीयल-टाइम कनेक्शन (WebSockets और WebRTC) वाले ऐप्लिकेशन, ताकि टाइम आउट की वजह से इन कनेक्शन को बंद होने से रोका जा सके. एक सेकंड में एक बार रन-टाइमर का नियम अब भी को इन मामलों में लागू किया जाता है.
ध्यान दें कि यह तरीका, सीपीयू टाइम के बजाय असल समय का इस्तेमाल करता है. यह सीपीयू समय का अच्छा अनुमान है और ऐसा लगता है कि यह मुख्य थ्रेड को ब्लॉक कर रहा है लंबे समय तक.
आखिर में, याद रखें कि अगर बैकग्राउंड में लंबे टास्क का इस्तेमाल किया जा रहा है, तो आपके ऐप्लिकेशन को बहुत लंबे समय तक (टास्क की अवधि के 100 गुना तक) के लिए थ्रॉटल किया जा सकता है.
अपने काम को 50 मि॰से॰ या उससे कम में बांट दें
परफ़ॉर्मेंस के लिए दिशा-निर्देश
और बैकग्राउंड में गैर-ज़रूरी काम करने से बचने के लिए, visibilityChange
लिसनर का इस्तेमाल करें.
ऑप्ट-आउट
Chrome, इस्तेमाल के इन उदाहरणों के लिए --disable-background-timer-throttling
फ़्लैग उपलब्ध कराता है
और उपयोगकर्ताओं की अनुमति वाली हेवी कंप्यूटेशन की सेवा भी चालू की है.