Masa aktif pekerja layanan ekstensi yang lebih lama

Pekerja layanan ekstensi sekarang dapat tetap aktif selama mereka menerima peristiwa. Hal ini meningkatkan keandalan pekerja layanan ekstensi, tetapi memiliki perangkap yang harus Anda hindari.

Joe Medley
Joe Medley

Mulai Chrome 110 (dalam versi beta per 7 Februari 2023), pekerja layanan ekstensi akan tetap aktif selama mereka menerima peristiwa. Tindakan ini memperbaiki masalah pengaturan waktu dalam implementasi pekerja layanan ekstensi sebelumnya. Waktu tunggu dapat terjadi saat peristiwa baru berada dalam antrean peristiwa dan waktu tunggu habis untuk memotong pekerjaan asinkron. Peningkatan ini menghilangkan masa aktif maksimum lima menit yang tersisa untuk pekerja layanan ekstensi.

Artikel ini menjelaskan bagaimana perilaku ini telah berubah.

Latar belakang

Pekerja layanan ekstensi umumnya berperilaku seperti pekerja layanan web, tetapi selain peristiwa pekerja layanan, pekerja layanan ekstensi juga dapat memproses peristiwa ekstensi. Meskipun peristiwa pekerja layanan normal akan memperpanjang masa aktif pekerja layanan, sebelum rilis 110, hanya beberapa peristiwa platform ekstensi yang membuat pekerja layanan ekstensi tetap aktif.

Biasanya, Chromium akan menghentikan pekerja layanan setelah salah satu kondisi berikut terpenuhi:

  • Pekerja layanan belum menerima peristiwa selama lebih dari tiga puluh detik dan tidak ada tugas berjalan lama yang masih dalam proses. Jika pekerja layanan menerima peristiwa selama waktu tersebut, timer tidak ada aktivitas akan dihapus.
  • Tugas yang berjalan lama memerlukan waktu lebih dari lima menit untuk diselesaikan dan tidak ada peristiwa yang diterima dalam tiga puluh detik terakhir.

Peristiwa pekerja layanan baru yang diterima sebelum timer tidak ada aktivitas atau timer tugas yang berjalan lama berakhir akan mereset timer dan memperpanjang masa pakai pekerja layanan.

Sayangnya, perilaku ini tidak berlaku untuk peristiwa ekstensi. Peristiwa ekstensi dapat membangunkan pekerja layanan ekstensi, dan menjaganya tetap aktif hingga peristiwa selesai, tetapi tidak dapat memperpanjang timer tidak ada aktivitas tiga puluh detik. Artinya, pekerja layanan ekstensi dapat dihentikan kapan saja setelah peristiwa ekstensi terakhir selesai, meskipun browser baru saja mengirimkan peristiwa baru ke ekstensi.

Yang berubah

Mulai Chrome 110, semua peristiwa mereset timer tidak ada aktivitas dan waktu tunggu tidak ada aktivitas tidak akan terjadi jika ada peristiwa yang tertunda. Dengan kata lain, dengan asumsi tidak ada gangguan yang tidak terduga, pekerja layanan ekstensi biasanya akan tetap aktif selama mereka secara aktif memproses peristiwa. Selain itu, panggilan ke API Chrome khusus ekstensi, seperti chrome.storage.local.get(), akan mereset waktu tunggu tidak ada aktivitas. Khususnya:

  • Pekerja layanan berakhir setelah 30 detik tidak aktif. (Menerima peristiwa atau memanggil API ekstensi akan mereset timer ini).
  • Pekerja layanan akan dihentikan jika satu permintaan, misalnya peristiwa atau panggilan API, membutuhkan waktu pemrosesan lebih dari 5 menit.

Beberapa API seperti pesan native memberikan tetap aktif yang kuat yang membatalkan kedua timer ini.

Kami masih berupaya untuk memastikan bahwa pekerja layanan ekstensi dihentikan jika memungkinkan, tanpa menonaktifkan pekerjaan yang berjalan lama. Service worker ekstensi yang mempertimbangkan resource harus selalu memberikan hasil jika memungkinkan. Selain itu, ekstensi harus bersiap menghadapi penghentian yang tidak terduga dengan mempertahankan status. Hal ini melindungi dari peristiwa yang tidak dapat diprediksi seperti browser yang ditutup paksa oleh pengguna.

Foto oleh Paula Guerreiro di Unsplash