הטמעה של סקריפטים רקע לא עקביים תצמצם משמעותית את עלות המשאבים של התוסף. סקריפט לרקע מבוסס אירוע יכול לתמוך ברוב הפונקציות של התוספים. רק בנסיבות נדירות כדאי לתוסף להציג רקע קבוע, כי הוא צורך משאבי מערכת באופן קבוע ויכול לגרום ללחץ במכשירים עם הספק נמוך יותר.
כדי לשפר את הביצועים של תוסף, אפשר להעביר סקריפט רקע מתמיד למודל לא מתמיד שמבוסס על אירועים. כברירת מחדל, הערך של "persistent"
מוגדר כ-true.
סימון העקביות כ-false
מאתרים את המפתח "background"
בקובץ manifest של התוסף, ואז מוסיפים או מעדכנים את השדה "persistent"
לערך false.
{
"name": "My extension",
...
"background": {
"scripts": ["background.js"],
"persistent": false
},
...
}
אותו הדבר חל על סקריפטים ברקע שמסתמכים על קובץ HTML.
{
"name": "My extension",
...
"background": {
"page": "background.html",
"persistent": false
},
...
}
פונקציות event listener של Surface
כדי להפעיל את סקריפט הרקע במקרה של אירוע חשוב, המאזינים צריכים להיות ברמה העליונה. יכול להיות שיהיה צורך לשנות את המבנה של המאזינים הרשומים לדפוס סינכרוני. המבנה של התקני ההאזנה, כפי שמתואר בהמשך, לא יאפשר להפעיל אותם כי הם לא רשומים באופן סינכרוני.
chrome.storage.local.get('runtimeEvents', function (events) {
for (let event of events)
chrome.runtime[event].addListener(listener);
});
במקום זאת, כדאי להשאיר את המאזינים ברמה העליונה ולבטל את ההטמעה שלהם.
chrome.runtime.onStartup.addListener(function() {
// run startup function
})
תיעוד שינויים במצב באחסון
משתמשים ב-storage API כדי להגדיר ולקבל ערכים ומצבים. משתמשים ב-local.set
כדי לעדכן במכונה המקומית.
chrome.storage.local.set({ variable: variableInformation });
משתמשים ב-local.get
כדי לקבל את הערך של המשתנה הזה.
chrome.storage.local.get(['variable'], function(result) {
let awesomeVariable = result.variable;
// Do something with awesomeVariable
});
הפיכת טיימרים להתראות
טיימרים שמבוססים על DOM, כמו window.setTimeout()
או window.setInterval()
, לא ישמשו בסקריפטים רקע לא קבועים אם הם מופעלים כשדף האירוע רדום.
let timeout = 1000 * 60 * 3; // 3 minutes in milliseconds
window.setTimeout(function() {
alert('Hello, world!');
}, timeout);
במקום זאת, כדאי להשתמש ב-alarms API.
chrome.alarms.create({delayInMinutes: 3.0})
לאחר מכן מוסיפים מאזין.
chrome.alarms.onAlarm.addListener(function() {
alert("Hello, world!")
});
עדכון הקריאות לפונקציות של סקריפטים ברקע
אם משתמשים ב-extension.getBackgroundPage
כדי להפעיל פונקציה מדף הרקע, צריך לעדכן ל-runtime.getBackgroundPage
. השיטה החדשה יותר מפעילה את הסקריפט שאינו מתמיד לפני החזרתו.
function backgroundFunction() {
alert('Background, reporting for duty!')
}
document.getElementById('target').addEventListener('click', function(){
chrome.extension.getBackgroundPage().backgroundFunction();
});
ה-method הזה לא תעבוד אם סקריפט הרקע לא פעיל, שהוא מצב ברירת המחדל של סקריפט שאינו קבוע. השיטה החדשה כוללת פונקציית קריאה חוזרת כדי לוודא שהסקריפט לרקע נטען.
document.getElementById('target').addEventListener('click', function() {
chrome.runtime.getBackgroundPage(function(backgroundPage){
backgroundPage.backgroundFunction()
})
});