Arka plan sekmelerinin tarayıcı performansı üzerinde büyük bir olumsuz etkisi olabilir, özellikle de pil ömrü açısından önemlidir. Chrome, bu sorunu azaltmak için son birkaç yıldır arka plan sekmelerine ç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 geçerli 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 sekmenin açık olduğunu bilmelidir. Ayrıca güç kullanımı ve pil ömrü üzerinde de ciddi bir etkiye sahip olabilir. Arka planda çalışma gereken süre boyunca, her zaman en az iyi bir fikir olabilir. 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ı sitelerde, CPU kullanımını %75'e varan oranlarda düşürebilirsiniz:
var doVisualUpdates = true;
document.addEventListener('visibilitychange', function(){
doVisualUpdates = !document.hidden;
});
function update() {
if (!doVisualUpdates) {
return;
}
doStuff();
}
Politikalar
requestAnimationFrame()
Belgelerde belirtildiği gibi, Chrome bir sayfa arka plandayken requestAnimationFrame()
çağrısı yapmaz.
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ı toplu olarak çalıştırır Böylece 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. Sesin çalınması durduktan sonra istisna birkaç saniye sürer: sonraki ses parçasını sıraya sokmasını sağlar.
Sesin yalnızca Chrome ses simgesini gösterdiğinde ve gösterildiğinde sesli 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 kargo Bütçeye dayalı zamanlayıcı kısıtlama, zamanlayıcı ayarlama mekanizmasının başka bir uzantısıdır. arka plan zamanlayıcı CPU kullanımına ek bir sınır koyuyor. Aşağıdaki şekilde çalışır:
- 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 geçtikten 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 planda olarak kabul edilir ve akışları sınırlandırılmaz.
- Gerçek zamanlı bağlantılara (WebSockets ve WebRTC) sahip uygulamalar (WebSockets ve WebRTC) bu bağlantıları zaman aşımına uğratarak devre dışı bırakabilirsiniz. Bu durumlarda zamanlayıcıların saniyede bir çalıştırılması kuralı yine de uygulanır.
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
(görevinizin süresinin 100 katına kadar) sınırlanabilir.
Çalışmanızı 50 ms veya daha kısa parçalara bölün
yönergeleri
ve arka planda gereksiz işler yapmaktan kaçınmak için visibilityChange
işleyicisini 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.