ব্যাকগ্রাউন্ড ট্যাবের কারণে ব্রাউজারের পারফর্ম্যান্সের উপর খুব খারাপ প্রভাব পড়তে পারে, বিশেষ করে ব্যাটারির আয়ুর উপর। এটি কমানোর জন্য, Chrome গত কয়েক বছর ধরে ব্যাকগ্রাউন্ড ট্যাবে বিভিন্ন ধরনের বিধিনিষেধ আরোপ করে আসছে। সম্প্রতি আরও উন্নতি করার জন্য বেশ কিছু প্রচেষ্টা করা হয়েছে, এবং এই ডকুমেন্টটি Chrome নীতির একটি ওভারভিউ দেয়। এই ডকুমেন্টে Chrome 57-এ বর্তমান নীতিগুলি বর্ণনা করার উপর জোর দেওয়া হয়েছে। দীর্ঘমেয়াদী কৌশল ও ভবিষ্যৎ পরিকল্পনা সম্পর্কে এই ডকুমেন্ট থেকে জানতে পারবেন।
ব্যাকগ্রাউন্ডের জন্য কোনও অ্যাপ্লিকেশন অপ্টিমাইজ করা
ওয়েব ডেভেলপারদের মনে রাখতে হবে যে ব্যবহারকারীরা প্রায়ই ব্যাকগ্রাউন্ডে অনেক ট্যাব খুলে রাখেন এবং এর ফলে পাওয়ার ব্যবহার ও ব্যাটারির আয়ু গুরুতরভাবে প্রভাবিত হতে পারে। ব্যাকগ্রাউন্ডে কাজ করা ন্যূনতম রাখা উচিত, যদি না কোনও বিশেষ ব্যবহারকারীর অভিজ্ঞতা প্রদান করার জন্য এটি একেবারে প্রয়োজনীয় হয়। পেজ কখন ব্যাকগ্রাউন্ডে আছে তা শনাক্ত করতে পেজ দৃশ্যমানতা API ব্যবহার করা উচিত এবং ভিজ্যুয়াল আপডেটের মতো অপ্রয়োজনীয় কাজ সাসপেন্ড করা উচিত।
কিছু সাইটের জন্য, এই সাধারণ অপ্টিমাইজেশন সিপিইউ ব্যবহার ৭৫% পর্যন্ত কমাতে পারে:
var doVisualUpdates = true;
document.addEventListener('visibilitychange', function(){
doVisualUpdates = !document.hidden;
});
function update() {
if (!doVisualUpdates) {
return;
}
doStuff();
}
নীতি
requestAnimationFrame()
ডকুমেন্টেশন অনুযায়ী,
কোনও পৃষ্ঠা ব্যাকগ্রাউন্ডে থাকলে Chrome requestAnimationFrame() কল করে না।
এই আচরণ ২০১১ সাল থেকে চালু আছে।
ব্যাকগ্রাউন্ড টাইমার অ্যালাইনমেন্ট
Chrome 11 থেকে, প্রতিটি স্বতন্ত্র টাইমার প্রতি সেকেন্ডে একবারের বেশি চালানো হয় না। Chrome এই টাইমারগুলি ব্যাচে প্রতি সেকেন্ডে একবার করে চালায়, এটি নিশ্চিত করে যে প্রসেস ওয়েক-আপের সংখ্যা সর্বনিম্ন রাখা হয়েছে। যেসব পৃষ্ঠায় শোনা যায় এমন অডিও চলছে সেগুলি ব্যবহারকারীর কাছে দৃশ্যমান বলে বিবেচিত হয় এবং ব্যাকগ্রাউন্ড টাইমার থ্রটলিং থেকে অব্যাহতি পায়। অডিও চালানো বন্ধ হয়ে যাওয়ার পরে কয়েক সেকেন্ডের জন্য ছাড় দেওয়া হয়, যাতে অ্যাপ্লিকেশন পরবর্তী অডিও ট্র্যাক সারিতে যোগ করতে পারে।
মনে রাখবেন, Chrome অডিও আইকন দেখালেই তবেই অডিও শোনা যাচ্ছে বলে ধরে নেওয়া হয়। সাইলেন্ট অডিও স্ট্রিম ছাড় দেয় না।
বাজেট-ভিত্তিক ব্যাকগ্রাউন্ড টাইমার থ্রটলিং
Chrome 57-এ শিপিং করা হচ্ছে, বাজেট-ভিত্তিক টাইমার থ্রটলিং হল টাইমার অ্যালাইনমেন্ট মেকানিজমের আরও একটি এক্সটেনশন, যা ব্যাকগ্রাউন্ড টাইমার CPU ব্যবহারের উপর অতিরিক্ত সীমা আরোপ করে। এটি এইভাবে কাজ করে:
- ব্যাকগ্রাউন্ডে টাইমার চালানোর জন্য প্রতিটি ব্যাকগ্রাউন্ড ট্যাবের একটি টাইম বাজেট (সেকেন্ডে) থাকে।
- ব্যাকগ্রাউন্ডে ১০ সেকেন্ড পরে কোনও পৃষ্ঠার উপর সময় বাজেট সংক্রান্ত বিধিনিষেধ আরোপ করা হয়।
- টাইমার টাস্ক তখনই রান করতে দেওয়া হয় যখন টাইম বাজেট নেগেটিভ হয় না।
- টাইমার এক্সিকিউট হওয়ার পরে, সেটির রান টাইম বাজেট থেকে বাদ দেওয়া হয়।
- সময় যত গড়াবে, বাজেট তত বাড়তে থাকবে (বর্তমানে প্রতি সেকেন্ডে ০.০১ সেকেন্ডের হারে সেট করা আছে)। মনে রাখবেন, থ্রটলিং আচরণ সম্পর্কে Chrome আরও ডেটা সংগ্রহ করার সাথে সাথে এই বাজেট রিজেনারেশন রেট পরিবর্তন করা যেতে পারে।
এই থ্রটলিং থেকে অটোমেটিক অব্যাহতি পাওয়ার একাধিক উপায় আছে:
- যেসব অ্যাপ্লিকেশন অডিও চালাচ্ছে সেগুলিকে ফোরগ্রাউন্ড হিসেবে বিবেচনা করা হয় এবং সেগুলি থ্রটল করা হয় না।
- টাইম-আউট হয়ে যাওয়ার কারণে এইসব কানেকশন বন্ধ হয়ে যাওয়া এড়াতে, রিয়েল-টাইম কানেকশন (WebSockets এবং WebRTC) সহ অ্যাপ্লিকেশন। এইসব ক্ষেত্রে, রান-টাইমার-ওয়ান-সেকেন্ড-অ্যাট-এ-টাইম নিয়মটি এখনও প্রযোজ্য।
মনে রাখবেন, এই মেকানিজমটি CPU টাইম নয়, ওয়াল টাইম ব্যবহার করে। এটি CPU সময়ের একটি ভালো আনুমানিক হিসেব এবং এটি মূল থ্রেডকে দীর্ঘ সময় ধরে ব্লক করার জন্য পেনাল্টি দেয়।
সবশেষে, মনে রাখবেন যে আপনি ব্যাকগ্রাউন্ডে দীর্ঘ টাস্ক ব্যবহার করলে, আপনার অ্যাপ্লিকেশন
দীর্ঘ সময় ধরে থ্রটল করা হতে পারে (আপনার টাস্কের সময়কালের ১০০ গুণ পর্যন্ত)।
আপনার কাজকে ৫০ মিলিসেকেন্ড বা তার কম সময়ের মধ্যে ভাগ করুন
পারফর্ম্যান্স নির্দেশিকা
এবং ব্যাকগ্রাউন্ডে অপ্রয়োজনীয় কাজ করা এড়াতে visibilityChange লিসনার ব্যবহার করুন।
অপ-আউট
Chrome, --disable-background-timer-throttling ফ্ল্যাগ প্রদান করে যা
টেস্ট স্যুট চালানো এবং ব্যবহারকারীর অনুমতিপ্রাপ্ত অন্যান্য জটিল কম্পিউটেশনের মতো ব্যবহারের ক্ষেত্রে কাজে লাগে।