Pembekuan dalam mode Penghemat Energi

François Doray
François Doray

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:

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:

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.