Arka plan sekmelerinin tarayıcı performansında, özellikle de pil ömründe büyük olumsuz bir etkisi olabilir. Chrome, bu sorunu azaltmak için son birkaç yıldır arka plandaki sekmelere çeşitli kısıtlamalar uyguluyor. Son zamanlarda daha fazla iyileştirme yapmak için çeşitli çalışmalar yapıldı. Bu dokümanda, Chrome politikasına genel bir bakış sunulmaktadır. Bu dokümanda, Chrome 57'deki mevcut politikalar açıklanmaktadır. Uzun vadeli strateji ve diğer planları bu dokümanda bulabilirsiniz.
Uygulamaları arka plan için optimize etme
Web geliştiricileri, kullanıcıların genellikle arka planda çok sayıda sekme açtığını ve bunun güç kullanımı ile pil ömrü üzerinde ciddi bir etkisi olabileceğini bilmelidir. Belirli bir kullanıcı deneyimi sunmak için kesinlikle gerekli olmadığı sürece arka planda çalışma minimum düzeyde tutulmalıdır. Sayfanın arka planda olduğu durumları algılamak ve görsel güncellemeler gibi gereksiz tüm işlemleri askıya almak için Sayfa Görünürlüğü API'si kullanılmalıdır.
Bazı siteler için bu basit optimizasyon, CPU kullanımını %75'e varan oranda azaltabilir:
var doVisualUpdates = true;
document.addEventListener('visibilitychange', function(){
doVisualUpdates = !document.hidden;
});
function update() {
if (!doVisualUpdates) {
return;
}
doStuff();
}
Politikalar
requestAnimationFrame()
Belgelere göre Chrome, bir sayfa arka planda olduğunda requestAnimationFrame()
yöntemini çağırmaz.
Bu davranış 2011'den beri geçerlidir.
Arka plan zamanlayıcı hizalaması
Chrome 11'den beri her bağımsız zamanlayıcı saniyede en fazla bir kez çalıştırılır. Chrome, bu zamanlayıcıları saniyede bir grup halinde çalıştırarak işlem uyandırma sayısının minimumda tutulmasını sağlar. Sesli ses çalan sayfalar kullanıcı tarafından görülebilir olarak kabul edilir ve arka plan zamanlayıcısı kısıtlamasından muaftır. Muafiyet, sesin oynatılması durdurulduktan sonra birkaç saniye boyunca devam eder. Bu sayede uygulamalar sonraki ses parçasını sıraya ekleyebilir.
Sesin yalnızca Chrome'da ses simgesi gösterildiğinde duyulabilir olarak kabul edildiğini unutmayın. Sessiz ses akışları muafiyet sağlamaz.
Bütçeye dayalı arka plan zamanlayıcısı kısıtlaması
Chrome 57'de kullanıma sunulan bütçeye dayalı zamanlayıcı kısıtlaması, zamanlayıcı hizalama mekanizmasının bir uzantısıdır ve arka plan zamanlayıcısının CPU kullanımına ek bir sınır getirir. İşleyiş şekli şu şekildedir:
- Her arka plan sekmesinin, arka planda çalışan zamanlayıcılar için bir zaman bütçesi (saniye cinsinden) vardır.
- Bir sayfa, arka planda 10 saniye sonra zaman bütçesi sınırlamalarına tabi olur.
- Zamanlayıcı görevinin yalnızca zaman bütçesi negatif olmadığında çalışmasına izin verilir.
- Zamanlayıcı yürütüldükten sonra çalışma süresi bütçeden çıkarılır.
- Bütçe zaman içinde sürekli olarak yeniden oluşturulur (şu anda saniye başına 0,01 saniyelik bir hıza ayarlanmıştır). Chrome, tıkanma davranışıyla ilgili daha fazla veri topladıkça bu bütçe yenileme oranının değiştirilebileceğini unutmayın.
Bu akış kısıtlamasından otomatik olarak muaf tutulan bazı durumlar vardır:
- Ses çalan uygulamalar ön plan olarak kabul edilir ve kısıtlanmaz.
- Gerçek zamanlı bağlantıları (WebSockets ve WebRTC) olan uygulamalar. Bu durumlarda, saniyede bir kez çalıştırma kuralı uygulanmaya devam eder.
Bu mekanizmanın CPU süresini değil, gerçek zamanı kullandığını unutmayın. CPU süresinin iyi bir yaklaşımı olan bu metrik, ana iş parçacığının uzun süre boyunca engellenmesini cezalandırır.
Son olarak, arka planda uzun görevler kullanıyorsanız uygulamanızın çok uzun bir süre (görevinizin süresinin 100 katına kadar) kısıtlanabileceğini unutmayın.
Çalışmanızı performans yönergelerine göre 50 ms veya daha kısa parçalara bölün ve arka planda gereksiz çalışma yapmaktan kaçınmak için visibilityChange
dinleyicisini kullanın.
Kapsam dışında kalma
Chrome, test paketlerini çalıştırma ve kullanıcı onaylı diğer yoğun hesaplamalar gibi kullanım alanları için --disable-background-timer-throttling
işaretini sağlar.