الإضافات هي إضافة إلى المتصفح، وهي مصممة لتوفير سياق إضافي ومخصص الأخرى. أي إضافة تعمل على إبطاء تجربة التصفح أو إضعافها تتسبب في مشكلة المستخدم ومضادًا لهدف إضافة Chrome. بالإضافة إلى عادات البرمجة الجيدة العامة، على المطوّرين اتّباع هذه الممارسات لضمان تحقيق إضافاتهم أفضل أداء.
تأجيل كل شيء ممكن
تجنّب تحميل الموارد حتى تكون هناك حاجة إليها. قم بتضمين ما هو مطلوب فقط لفتح في دالة بدء التشغيل. لا تقم بتحميل الأشياء أثناء بدء التشغيل والتي لا تكون مطلوبة إلا إذا كان ينقر المستخدم على زر أو ميزات لا تعمل إلا عند تسجيل دخوله قبل أن يكون فرصة للقيام بذلك.
إدارة الأحداث المهمة
يحتوي النص البرمجي للخلفية الفعال على أحداث مسجّلة مهمة الإضافة. يظل في وضع ساكن حتى يبدأ المستمع، ويتصرف وفقًا لذلك، ثم يعود إلى حالة خاملة الولاية. يؤدي ذلك إلى استنزاف موارد النظام للحفاظ على تشغيل نص برمجي غير ضروري.
يجب تسجيل النصوص البرمجية للخلفية في البيان مع ضبط مدى الثبات على "خطأ" إذا ممكن.
{
"name": "High Performance Extension",
"description" : "Sleepy Background Script",
"version": "1.0",
...
"background": {
"scripts": ["background.js"],
"persistent": false
},
...
}
إنّ المناسبة الوحيدة للحفاظ على نشاط النص البرمجي للخلفية نشطًا بشكل مستمر هي إذا كانت الإضافة تستخدم
chrome.webRequest
API لحظر طلبات الشبكة أو تعديلها. واجهة برمجة التطبيقات webRequest غير متوافقة
مع صفحات خلفية غير ثابتة.
{
"name": "High Performance Extension",
"description" : "Persistent Background Script",
"version": "1.0",
...
"background": {
"scripts": ["background.js"],
"persistent": true
},
"permissions": [
"webRequest",
"webRequestBlocking",
"https://<distracting social media site>.com/*"
],
...
}
chrome.webRequest.onBeforeRequest.addListener(
function(details) {
return {redirectUrl: "/"};
},
{urls: ["https://social.media.distraction.com/*"]},
["blocking"]
);
الاحتواء على نصوص برمجية للمحتوى
يجب أن تعمل النصوص البرمجية للمحتوى الوكيلة السرية لأي إضافة، بحيث تقرأ بمهارة من أو تعديل صفحة الويب مع الاعتماد على نواة الإضافة لتنفيذ منطق أكثر شدّة. يجب أن يكون لديهم أهداف واضحة لتجنب الأنشطة الغازية على الصفحات غير الملائمة. من الناحية المثالية، يجب استخدام نصوص المحتوى لا تتم ملاحظتها في تجربة التصفح بصرف النظر عن السلوك الهادف.
إعلان الاستهدافات
إحدى الإضافات التي تشغِّل نصوصًا برمجية للمحتوى في مواقع غير ضرورية أو في أوقات غير ملائمة يمكن أن تتسبب في
لإبطاء أداء المتصفح مع احتمال حدوث أخطاء في الوظائف. تجنّب ذلك من خلال تقديم مطابقة
الأنماط في البيان وتشغيل النص البرمجي على document_idle
بدلاً من document_start
.
{
"name": "High Performance Extension",
"description" : "Superfly Superlight Content Scripts",
"version": "1.0",
...
"content_scripts": [
{
"js": ["content_script.js"],
"matches": ["/*"],
"run_at": "document_idle"
}
]
...
}
إذا كانت الإضافة تحتاج فقط إلى الوصول إلى صفحة ويب تحتوي على إجراء المستخدم، يجب إدخالها آليًا لن يتم تنفيذ عملية الإدخال الآلية إلا عند استدعاءها من قِبل المستخدم.
chrome.browserAction.onClicked.addListener(function(tab) {
chrome.tabs.executeScript({
code: 'document.body.style.fontSize="100px"'
});
});
لا تستخدِم النصوص البرمجية للمحتوى إلا عند الحاجة.
قد لا تحتاج العديد من الإضافات إلى نص برمجي للمحتوى إطلاقًا لتحقيق الوظائف المطلوبة. استخدام
ستضبط واجهة برمجة تطبيقات declarativeContent
قواعد للإضافة تتعرّف على الشروط ذات الصلة.
المشروع. إنّ هذا الأسلوب أكثر فعالية من النصوص البرمجية للمحتوى مع استخدام عدد أقل من الرموز البرمجية.
إذا كانت الإضافة تحتاج إلى عرض إجراء صفحة للمستخدم عند زيارة موقع إلكتروني يحتوي على HTML5
<video>
، يمكن تحديد قاعدة تعريفية.
chrome.runtime.onInstalled.addListener(function() {
chrome.declarativeContent.onPageChanged.removeRules(undefined, function() {
chrome.declarativeContent.onPageChanged.addRules([
{
conditions: [
new chrome.declarativeContent.PageStateMatcher({
css: ["video"],
})
],
actions: [ new chrome.declarativeContent.ShowPageAction() ]
}
]);
});
});
تقييم كفاءة الرمز البرمجي
ويمكن تطبيق الممارسات العامة نفسها المتعلقة بأداء الموقع الإلكتروني على إضافات مثل التنفيذ تقنيات البرمجة غير المتزامنة والحفاظ على الحد الأدنى من التعليمة البرمجية ودمجها.
استخدِم أدوات، مثل Lighthouse، لتقييم أداء الإضافات واستهداف المناطق التي تحسين صفحات الإضافات المرئية.