Dipublikasikan: 20 Januari 2025
Mulai Chrome 133 (Februari 2025), tab latar belakang yang memenuhi syarat dan menggunakan banyak CPU akan dibekukan saat mode Penghemat Energi aktif. Hal ini bertujuan untuk mengurangi konsumsi baterai bagi pengguna yang mengandalkan Penghemat Energi dan yang setiap persentasenya daya tahan baterainya penting. Untuk meminimalkan gangguan, hanya tab latar belakang yang memenuhi kriteria tertentu dan menunjukkan penggunaan CPU yang tinggi yang akan dibekukan.
Apa yang dimaksud dengan pembekuan?
Pembekuan akan menangguhkan eksekusi tugas di halaman web. Hal ini mencakup:
- Pengendali peristiwa (misalnya, input, jaringan, dan sensor)
- Timer
- Resolver promise
Pembekuan berbeda dengan penghapusan, yaitu saat tab di-unload dari memori. Saat tab yang dibekukan kembali difokuskan, tab tersebut akan otomatis dicairkan, dan tugas apa pun yang diantrekan akan dieksekusi tanpa kehilangan status.
Peristiwa pembekuan dan melanjutkan dikirim saat halaman dibekukan atau dilanjutkan (lihat dokumentasi Page Lifecycle API). Peristiwa ini memungkinkan halaman melepaskan resource yang tidak digunakan, memberi tahu server bahwa halaman dijeda, atau mencatat metrik.
Halaman apa yang dapat dibekukan?
Pembekuan akan beroperasi pada
grup konteks penjelajahan.
Biasanya, grup konteks penjelajahan terdiri dari satu tab. Namun, beberapa tab dapat berada dalam grup yang sama saat menggunakan API seperti window.open()
.
Jika Penghemat Energi diaktifkan, grup konteks penjelajahan akan dibekukan jika memenuhi kondisi berikut:
- Semua halaman dalam grup telah disembunyikan dan dibisukan selama lebih dari lima menit.
- Setiap subgrup frame dengan origin yang sama dalam grup adalah "CPU-intensive".
- Grup tidak:
- Memberikan fungsi konferensi audio atau video (terdeteksi menggunakan mikrofon, kamera, tangkapan layar/jendela/tab, atau RTCPeerConnection dengan RTCDataChannel 'terbuka' atau MediaStreamTrack 'live').
- Mengontrol perangkat eksternal (terdeteksi menggunakan Web USB, Web Bluetooth, Web HID, atau Web Serial).
- Tahan Kunci Web atau koneksi IndexedDB yang memblokir operasi di luar grup.
Definisi "CPU-intensive" dapat berkembang, tetapi tujuannya adalah untuk mengecualikan klien email atau chat yang diimplementasikan secara efisien, atau aplikasi kalender yang menghasilkan notifikasi.
Membekukan semua tab secara bersamaan dalam grup konteks penjelajahan yang sama akan meminimalkan gangguan untuk aplikasi yang menggunakan pop-up, seperti aplikasi untuk menulis pesan atau memasukkan kredensial.
Bagaimana cara menyiapkan situs saya?
Jika situs Anda tidak memiliki fungsi latar belakang (misalnya notifikasi, upload file, atau pembaruan konten), situs tersebut kemungkinan tidak akan terpengaruh oleh pembekuan.
Jika situs Anda memiliki fungsi latar belakang, minimalkan penggunaan CPU-nya di latar belakang agar tidak dianggap intensif CPU sehingga membeku. Berikut beberapa tips:
- Hindari timer untuk pemeriksaan perubahan status berkala.
- Gunakan IntersectionObserver untuk mendeteksi kapan elemen memasuki area pandang.
- Gunakan ResizeObserver untuk mendeteksi perubahan ukuran elemen.
- Gunakan MutationObserver atau callback siklus proses elemen kustom untuk perubahan DOM.
- Pertimbangkan soket web, peristiwa yang dikirim server, pesan push, atau streaming pengambilan, bukan server polling.
- Gunakan peristiwa seperti timeupdate dan ended untuk perubahan audio atau video.
Sebaiknya migrasikan juga fungsi latar belakang ke pekerja layanan agar tidak terpengaruh oleh pembekuan. Selain tidak terpengaruh oleh pembekuan, pekerja layanan memerlukan lebih sedikit resource browser. Pertimbangkan untuk menggunakan:
- Push API untuk notifikasi
- Background Synchronization API atau Web Periodic Background Synchronization API untuk mengambil update.
Situs dapat memilih untuk tidak membeku dengan berpartisipasi dalam uji coba origin BackgroundPageFreezeOptOut. Uji coba ini akan dihentikan setelah API baru untuk mendeklarasikan pekerjaan latar belakang yang penting dirilis (misalnya Progress Notification API).
Anda dapat memeriksa kelayakan tab untuk dibekukan di chrome://discards
. Perhatikan bahwa
meskipun tab memenuhi syarat untuk dibekukan, Chrome 133 hanya akan membekukannya jika tab tersebut
menggunakan banyak CPU dan Penghemat Energi aktif.
Apa langkah selanjutnya?
Pembekuan tab latar belakang menghemat daya, yang penting bagi pengguna yang mengaktifkan Penghemat Energi.
Hal ini juga meningkatkan performa tab latar depan dan membantu menghindari penghentian tab latar belakang, terutama pada perangkat yang memiliki keterbatasan resource, dengan mengurangi penggunaan CPU dan akses memori. Oleh karena itu, Chrome akan memperluas pembekuan tab ke lebih banyak situasi (perubahan akan diumumkan di blink-dev@chromium.org). Untuk melakukannya dengan gangguan minimal pada kasus penggunaan latar belakang, API baru seperti Progress Notification API akan memungkinkan halaman mendeklarasikan tugas latar belakang yang penting dan mencegah pembekuan.