Препоръки заподобряване на производителността на разширения - Mozilla, MDN
Увеличаване на скоростта на стартиране
Разширенията се зареждат и изпълняват всеки път, когато се отвори нов прозорец на браузъра. Това означава, че всеки път, когато отворите прозорец, вашето разширение може да забави извеждането на желаното съдържание на екрана. Има редица начини за намаляване на забавянето за рендиране на персонализирано съдържание.
Изтегляйте само това, от което наистина се нуждаете
Отложете всичко възможно
Повечето разширения имат манипулатор на събития за зареждане в главното наслагване, който изпълнява функция, когато браузърът се стартира. Направете възможно най-малко код в тази функция. Прозорецът на браузъра виси, докато манипулаторът на натоварването на вашия плъгин се изпълни напълно, така че колкото повече действия предприема, толкова по-бавен изглежда Firefox за потребителя.
Ако нещо може да се направи дори част от секундата по-късно, използвайте методите nsITimer или window.setTimeout(), за да отложите това действие за по-късно. Дори кратко забавяне може да окаже голямо влияние върху производителността.
Общи проблеми с производителността
Избягвайте изтичане на памет
Изтичането на памет принуждава колектора за боклук и колектора за цикъл да вършат повече работа и това значително се отразява на производителността.
Отделенията за зомбита са специален вид изтичане на памет, което може лесно да бъде открито. Разгледайте страницата Zombie Cell, особено секцията Proactive Plugin Check.
Вижте Чести причини за изтичане на памет в разширения, за да научите как да избегнете зомби клетки и други видове изтичане.
Избягвайте да пишете бавни CSS стилови таблици
- Прочетете ръководството„Разработване на ефективни CSS стилови таблици“.
- Имайте предвид, че всеки селектор във вашето правило, който може да съответства на много различни възли, е източник на излишни разходи за производителност при търсене на съвпадение или извършване на динамична актуализация на елемент. Това е особено лошо, ако селекторът може динамично да стартира и спира да съвпада. Пазете се от използването на псевдо-класа ":hover".
Избягвайте използването на събития за мутация на DOM
Технологията за прослушване на промени в DOM е изключително ресурсоемка и използването й води до значително влошаване на производителността. Тъй като официално е признат за непрепоръчителен за употреба, въпреки че има много аналози, трябва да се избягва по всякакъв възможен начин.
Използвайте мързеливи методи за зареждане
- defineLazyGetter() дефинира функция за посочения обект, която действа като метод за достъп, който връща обекта, който ще бъде създаден при първия достъп до него. Вижте примери за подробности.
- defineLazyServiceGetter() дефинира функция на посочения обект, която действа като метод за достъп за услугата. Услугата няма да бъде получена до първото й използване. Например, прегледайте източника.
Много общи услуги вече са кеширани за вас в модула Services.jsm.
Използвайте асинхронен I/O
Това трябва да се подчертае: никога не правете синхронен I/O на главната нишка.
Всеки вход/изход на главната нишка, било то дейност на твърдия диск или мрежова активност, може да причини сериозни проблеми с времето за реакция на потребителския интерфейс.
- Никога не използвайте синхронни XMLHttpRequests.
- Използвайте модула NetUtils.jsm, койтопредоставя възможност за четене и копиране на файлове асинхронно.
- Никога не работете със SQLite бази данни синхронно. Вместо това използвайте асинхронния API.
- Като се изпълняват една след друга, асинхронните операции често могат да бъдат значително опростени с помощта на обекта Promises.
Избягвайте събития с движение на мишката
Избягвайте използването на манипулатори на събития на мишката, включително събития като mouseover, mouseout, mouseenter, mouseexit и особено mousemove. Те се срещат доста често, така че техните манипулатори могат значително да увеличат натоварването на процесора.
Когато те са неизбежни, трябва да се извършат минимални изчисления по време на обработката на събитието и основната работа трябва да бъде спряна. Манипулаторите трябва да се добавят към най-вероятния елемент и да се премахват, ако не са директно необходими в момента.
Избягвайте анимирани изображения
Анимираните изображения изискват значително повече ресурси, отколкото се смяташе досега, особено когато се използват в дървовидни елементи.
Обмислете използването на Chrome Workers
Можете да използвате ChromeWorker за извършване на продължителни задачи или обработка на данни.
Вижте също
Етикети на документи и участници
Принос към тази страница: mdnwebdocs-bot, helperman
Последна актуализация: mdnwebdocs-bot, 23 март 2019, 18:40:39
Благодаря ти! Моля, проверете входящата си кутия, за да потвърдите абонамента си.
Ако преди това не сте потвърдили абонамента си за бюлетина на Mozilla, може да се наложи да го направите. Моля, проверете папката "Входящи" или "Спам" във вашата пощенска кутия, за да видите дали сте получили имейл от нас.