Mengimplementasikan skrip latar belakang non-persisten akan sangat mengurangi biaya resource ekstensi Anda. Sebagian besar fungsi ekstensi dapat didukung oleh skrip latar belakang berbasis peristiwa. Hanya dalam keadaan yang jarang sebaiknya ekstensi memiliki latar belakang yang persisten, karena terus menggunakan resource sistem dan dapat menyebabkan ketegangan pada perangkat yang menggunakan daya lebih rendah.
Tingkatkan performa ekstensi dengan memigrasikan skrip latar belakang persisten ke model non-persisten berbasis peristiwa. Secara default, "persistent"
disetel ke true (benar).
Menetapkan persistensi sebagai salah
Temukan kunci "background"
dalam file manifest ekstensi, lalu tambahkan atau perbarui
kolom "persistent"
ke salah (false).
{
"name": "My extension",
...
"background": {
"scripts": ["background.js"],
"persistent": false
},
...
}
Hal yang sama berlaku untuk skrip latar belakang yang mengandalkan file HTML.
{
"name": "My extension",
...
"background": {
"page": "background.html",
"persistent": false
},
...
}
Pemroses peristiwa platform
Pemroses harus berada di tingkat teratas untuk mengaktifkan skrip latar belakang jika peristiwa penting dipicu. Pemroses yang terdaftar mungkin perlu diatur ulang ke pola sinkron. Menstrukturkan pemroses, seperti di bawah, tidak akan mengizinkan pemroses dipanggil karena tidak terdaftar secara sinkron.
chrome.storage.local.get('runtimeEvents', function (events) {
for (let event of events)
chrome.runtime[event].addListener(listener);
});
Sebagai gantinya, biarkan pemroses di tingkat teratas dan tidak bertingkat.
chrome.runtime.onStartup.addListener(function() {
// run startup function
})
Merekam perubahan status dalam penyimpanan
Gunakan storage API untuk menetapkan dan menampilkan status dan nilai. Gunakan local.set
untuk melakukan update di komputer
lokal.
chrome.storage.local.set({ variable: variableInformation });
Gunakan local.get
untuk mengambil nilai variabel tersebut.
chrome.storage.local.get(['variable'], function(result) {
let awesomeVariable = result.variable;
// Do something with awesomeVariable
});
Mengubah timer menjadi alarm
Timer berbasis DOM, seperti window.setTimeout()
atau window.setInterval()
, tidak dihormati dalam
skrip latar belakang non-persisten jika dipicu saat halaman peristiwa tidak aktif.
let timeout = 1000 * 60 * 3; // 3 minutes in milliseconds
window.setTimeout(function() {
alert('Hello, world!');
}, timeout);
Sebagai gantinya, gunakan alarms API.
chrome.alarms.create({delayInMinutes: 3.0})
Kemudian, tambahkan pemroses.
chrome.alarms.onAlarm.addListener(function() {
alert("Hello, world!")
});
Memperbarui panggilan untuk fungsi skrip latar belakang
Jika menggunakan extension.getBackgroundPage
untuk memanggil fungsi dari halaman latar belakang, update ke
runtime.getBackgroundPage
. Metode yang lebih baru mengaktifkan skrip non-persisten sebelum
menampilkannya.
function backgroundFunction() {
alert('Background, reporting for duty!')
}
document.getElementById('target').addEventListener('click', function(){
chrome.extension.getBackgroundPage().backgroundFunction();
});
Metode ini tidak akan berfungsi jika skrip latar belakang tidak aktif, yang merupakan status default untuk skrip non-persisten. Metode yang lebih baru menyertakan fungsi callback untuk memastikan skrip latar belakang telah dimuat.
document.getElementById('target').addEventListener('click', function() {
chrome.runtime.getBackgroundPage(function(backgroundPage){
backgroundPage.backgroundFunction()
})
});