SlideShare a Scribd company logo
1 of 30
Оптимизация производительности
мобильных веб-приложений
О себе:
 В IT с 2001 года
 Мобильной разработкой увлекаюсь с 2009 года
 Участвовал в разработке:
- более полутора десятков программ под
андроид (от 4 до 1 700 000 инсталляций)
- около двух десятков кроссплатформенных
приложений (JavaScript/HTML)
О чем сегодня поговорим:
Оптимизация работы с сетью
- file loading (JS, CSS), data API optimization
Оптимизация визуальной части
- render tree optimization (reflow, repaint)
Оптимизация невидимых механизмов браузера
- DOM optimization (excess DOM, custom events, DOM manipulation)
Оптимизация кода
- JS Optimization (GC, Object Pools)
Что такое «веб-приложение»?
Веб-приложение: клиент-серверное приложение,
в котором клиентом выступает браузер,
а сервером — веб-сервер?
 веб-сайты: предоставляют информацию пользователю
(http://cnn.com и http://php.net)
 веб-приложения: позволяют пользователю совершать
какие либо действия (Google Analytics, Gmail и JSLint)
интерактивность
Проектирование
архитектуры:
разделение логики между
серверной и клиентской
частью
Оптимизация
Как получить
Готовых решений нет!
Грузим файл
 данные загружаются по медленным сотовым сетям
Времени на парсинг уходит гораздо больше, чем на десктопе, не только в связи
с меньшей процессорной производительностью, но и в связи с «оптимизацией».
 данные передаются пакетами
Размер пакета: ≈1160 байт. В сотовых сетях высокий уровень помех.
Как следствие, пакет повреждается и перезапрашивается.
Особенности работы
сетевых передатчиков
в мобильном устройстве (3G)
 Потребляет много энергии (второе место после экрана)
 3 основных состояния:
DCH - полная мощность
FACH - половина мощности
IDLE
 Переход IDLE→DCH занимает примерно 2 секунды
Стратегия использования сети
в мобильных устройствах
 Посылаем реже и больше
 Используем ключевые события
(например, onunload или applicationDidEnterBackground)
 A Call for More Energy-Efficient Apps
http://www.research.att.com/articles/featured_stories/2011_03/201102_Energy_efficient
 Используем асинхронную загрузку с умом
Основные компоненты браузера
Схема работыWebKit
Схема работы модуля отображения
 Reflow — пересчёт геометрии объектов
 Repaint — перерисовка объектов
Очень дорогие операции
Reflow может срабатывать несколько
раз в ходе выполнения скрипта
Repaint:
 visibility
 colour
 outline and other visual style properties
Reflow:
 insert, remove or update an element in the DOM
 modify content on the page, e.g. text in an input box
 move a DOM element
 animate a DOM element
 take measurements of an element such as offsetHeight or getComputedStyle
 change a CSS style
 change the className of an element
 add or remove a stylesheet
 resize the window
 scroll
Element
clientHeight, clientLeft, clientTop, clientWidth, focus(), getBoundingClientRect(),
GetClientRects(), innerText, offsetHeight, offsetLeft, offsetParent, offsetTop, offsetWidth,
outerText, scrollByLines(), scrollByPages(), scrollHeight, scrollIntoView(),
scrollIntoViewIfNeeded(), scrollLeft, scrollTop, ScrollWidth
window
getComputedStyle(), scrollBy(), scrollTo(), scrollX, scrollY,
webkitConvertPointFromNodeToPage(), webkitConvertPointFromPageToNode()
Что происходит
в браузере
Компоновка
Система "грязных битов":
 Dirty
 Children are dirty
Глобальная (синхронная):
 Глобальное изменение стиля, который используется во всех объектах отображения,
например, изменение шрифта
 Изменение размеров экрана
Инкрементная компоновка (асинхронная):
 Остальное
1. Родительский объект отображения определяет собственную ширину.
position — выносит в один проход, float — выносит в несколько проходов.
2. Родительский объект отображения обрабатывает дочерние элементы:
определяет положение дочернего объекта отображения (задает его координаты x и y);
вызывает компоновку дочернего элемента (если он помечен как "грязный",
если выполняется глобальная перекомпоновка и т. д.);
в результате чего рассчитывается его высота.
3. На основе суммарной высоты дочерних элементов, а также высоты полей и отступов
рассчитывается высота родительского объекта отображения:
она требуется его собственному родительскому объекту.
4. Биты больше не помечаются как "грязные".
Процесс компоновки
 transform: translateZ(0)
 transform: translate3d(0, 0, 0)
 CSSTransitions + CSSTransform/opacity
 CSS Animations + CSSTransform/opacity
 JS + CSSTransform3D
 JS + opacity (если слой на GPU)
GPU
 На CPU оперируем DOM-объектами, на GPU — текстурами
 Переход CPU→GPU занимает время
 Переход на GPU - всегда отдельный repaint
 Увеличивается потребление памяти
 Можно «случайно» перенести на GPU ненужные элементы
 * { transform: translateZ(0) } - зло!
Проблемы
 Анимируем элементы с position: absolute|fixed
 Используем GPU-анимации
 Заранее переносим анимируемые слои на GPU
 Стараемся использовать CSSTransitions/Animations
Стратегии для правильной анимации
 excess DOM
 custom events
 DOM manipulation
DOM
Время манипуляции с DOM
зависит от его объема
3 elements = 0.003 ms
1000 elements = 0.03 ms
10000 elements = 0.36 ms
+ JQuery = 2.46 ms
 В JavaScript нет ручного управления памятью
 Этим занимается GC
 GC работает в основном потоке
 Требуется несколько проходов GC для очистки памяти
GC в JavaScript
Object Pool
http://www.ozon.ru/context/detail/id/18421547/
http://www.ibm.com/developerworks/ru/library/wa-websiteapp/
http://www.html5rocks.com/ru/tutorials/internals/howbrowserswork/
http://gent.ilcore.com/2011/03/how-not-to-trigger-layout-in-webkit.html
http://habrahabr.ru/post/124203/
http://web-standards.ru/articles/front-end-performance/
http://www.igvita.com/2013/01/15/faster-websites-crash-course-on-web-
performance/
http://kellegous.com/j/2013/01/26/layout-performance/
http://cheeaun.com/blog/2012/03/how-i-built-hacker-news-mobile-web-app
http://aerotwist.com/blog/making-a-60fps-mobile-app
http://stackoverflow.com/questions/8599227/javascript-disable-second-
onclickhttps://github.com/dave1010/jquery-fast-
click/blob/master/jQuery.fastClick.js
http://labs.ft.com/2011/08/fastclick-native-like-tapping-for-touch-apps/
http://cubiq.org/remove-onclick-delay-on-webkit-for-iphone
https://github.com/mozilla/pointer.js/blob/master/pointer.js
https://developers.google.com/mobile/articles/fast_buttons?hl=ru-RU
Windows Touch Guidance.pdf
http://jsfiddle.net/2mKmW/
http://www.phpied.com/rendering-repaint-reflowrelayout-restyle/
http://android.amberfog.com/?p=296
http://cubiq.org/infiniwall
http://w2ui.com/web/blog/7/JavaScript-Grid-with-One-Million-Records
http://love-media.net/articles/ipad-animation
http://www.tricedesigns.com/2012/01/17/mobile-web-phonegap-html-dev-tips/
http://developer.android.com/guide/webapps/targeting.html
https://developers.google.com/mobile/articles/webapp_fixed_ui
Спасибо за внимание!
Буду рад ответить на Ваши вопросы.
y.luchaninov@mobidev.biz
mobidev.biz

More Related Content

Similar to Вебинар "Оптимизация производительности мобильных веб-приложений"

Проектируем облачный веб-сервис "по-взрослому" (Сергей Рыжиков)
Проектируем облачный веб-сервис "по-взрослому" (Сергей Рыжиков)Проектируем облачный веб-сервис "по-взрослому" (Сергей Рыжиков)
Проектируем облачный веб-сервис "по-взрослому" (Сергей Рыжиков)
Ontico
 
Паттерны быстрой разработки WPF MVVM бизнес-приложений
Паттерны быстрой разработки WPF MVVM бизнес-приложенийПаттерны быстрой разработки WPF MVVM бизнес-приложений
Паттерны быстрой разработки WPF MVVM бизнес-приложений
GoSharp
 
Проектирование высоконагруженного масштабируемого веб-сервиса в облаке на при...
Проектирование высоконагруженного масштабируемого веб-сервиса в облаке на при...Проектирование высоконагруженного масштабируемого веб-сервиса в облаке на при...
Проектирование высоконагруженного масштабируемого веб-сервиса в облаке на при...
Ontico
 
Web весна 2013 лекция 10
Web весна 2013 лекция 10Web весна 2013 лекция 10
Web весна 2013 лекция 10
Technopark
 
Стажировка-2014, занятие 8. Обзор Sails framework (Node.js)
Стажировка-2014, занятие 8. Обзор Sails framework (Node.js)Стажировка-2014, занятие 8. Обзор Sails framework (Node.js)
Стажировка-2014, занятие 8. Обзор Sails framework (Node.js)
7bits
 
Drupal -organizaciya_razrabotki
Drupal  -organizaciya_razrabotkiDrupal  -organizaciya_razrabotki
Drupal -organizaciya_razrabotki
drupalconf
 
Web осень 2012 лекция 10
Web осень 2012 лекция 10Web осень 2012 лекция 10
Web осень 2012 лекция 10
Technopark
 
Web internship java script
Web internship   java scriptWeb internship   java script
Web internship java script
Noveo
 
Лекция 4
Лекция 4Лекция 4
Лекция 4
itc73
 

Similar to Вебинар "Оптимизация производительности мобильных веб-приложений" (20)

Desktop app based on node js and html5
Desktop app based on node js and html5Desktop app based on node js and html5
Desktop app based on node js and html5
 
Проектируем облачный веб-сервис "по-взрослому" (Сергей Рыжиков)
Проектируем облачный веб-сервис "по-взрослому" (Сергей Рыжиков)Проектируем облачный веб-сервис "по-взрослому" (Сергей Рыжиков)
Проектируем облачный веб-сервис "по-взрослому" (Сергей Рыжиков)
 
Паттерны быстрой разработки WPF MVVM бизнес-приложений
Паттерны быстрой разработки WPF MVVM бизнес-приложенийПаттерны быстрой разработки WPF MVVM бизнес-приложений
Паттерны быстрой разработки WPF MVVM бизнес-приложений
 
Лекция Android
Лекция AndroidЛекция Android
Лекция Android
 
Проектирование высоконагруженного масштабируемого веб-сервиса в облаке на при...
Проектирование высоконагруженного масштабируемого веб-сервиса в облаке на при...Проектирование высоконагруженного масштабируемого веб-сервиса в облаке на при...
Проектирование высоконагруженного масштабируемого веб-сервиса в облаке на при...
 
Web весна 2013 лекция 10
Web весна 2013 лекция 10Web весна 2013 лекция 10
Web весна 2013 лекция 10
 
Svyatoslav Login "360 View of XSS"
Svyatoslav Login "360 View of XSS"Svyatoslav Login "360 View of XSS"
Svyatoslav Login "360 View of XSS"
 
Jsfwdays 2013-2
Jsfwdays 2013-2Jsfwdays 2013-2
Jsfwdays 2013-2
 
Стажировка-2014, занятие 8. Обзор Sails framework (Node.js)
Стажировка-2014, занятие 8. Обзор Sails framework (Node.js)Стажировка-2014, занятие 8. Обзор Sails framework (Node.js)
Стажировка-2014, занятие 8. Обзор Sails framework (Node.js)
 
JavaScript-модули "из прошлого в будущее"
JavaScript-модули "из прошлого в будущее"JavaScript-модули "из прошлого в будущее"
JavaScript-модули "из прошлого в будущее"
 
Эффективный JavaScript - IQLab Frontend Fusion 2012
Эффективный  JavaScript - IQLab Frontend Fusion 2012Эффективный  JavaScript - IQLab Frontend Fusion 2012
Эффективный JavaScript - IQLab Frontend Fusion 2012
 
СВЯТ ЛОГИН «Як провести пошук на xss атаку» Online QADay 2020 #2
СВЯТ ЛОГИН «Як провести пошук на xss атаку» Online QADay 2020 #2СВЯТ ЛОГИН «Як провести пошук на xss атаку» Online QADay 2020 #2
СВЯТ ЛОГИН «Як провести пошук на xss атаку» Online QADay 2020 #2
 
Drupal -organizaciya_razrabotki
Drupal  -organizaciya_razrabotkiDrupal  -organizaciya_razrabotki
Drupal -organizaciya_razrabotki
 
Drupal организация разработки
Drupal   организация разработкиDrupal   организация разработки
Drupal организация разработки
 
Web осень 2012 лекция 10
Web осень 2012 лекция 10Web осень 2012 лекция 10
Web осень 2012 лекция 10
 
Web internship java script
Web internship   java scriptWeb internship   java script
Web internship java script
 
Microsoft Visual Studio 2010
Microsoft Visual Studio 2010Microsoft Visual Studio 2010
Microsoft Visual Studio 2010
 
Лекция 4
Лекция 4Лекция 4
Лекция 4
 
Экскурс в мир WEB разработки
Экскурс в мир WEB разработкиЭкскурс в мир WEB разработки
Экскурс в мир WEB разработки
 
Что нового в Visual Studio 2010 и .Net 4.0
Что нового в Visual Studio 2010 и .Net 4.0Что нового в Visual Studio 2010 и .Net 4.0
Что нового в Visual Studio 2010 и .Net 4.0
 

More from MobiDev

More from MobiDev (14)

What is the best programming language for your web product?
What is the best programming language for your web product?What is the best programming language for your web product?
What is the best programming language for your web product?
 
Кукуруза Дмитрий: "Спасение рядового проекта"
Кукуруза Дмитрий: "Спасение рядового проекта"Кукуруза Дмитрий: "Спасение рядового проекта"
Кукуруза Дмитрий: "Спасение рядового проекта"
 
Цапок Юлия : "Сколько UX в вашем UI"
Цапок Юлия : "Сколько UX в вашем UI"Цапок Юлия : "Сколько UX в вашем UI"
Цапок Юлия : "Сколько UX в вашем UI"
 
Чеботарев Андрей: "Внедрение дизайна без потерь"
Чеботарев Андрей: "Внедрение дизайна без потерь"Чеботарев Андрей: "Внедрение дизайна без потерь"
Чеботарев Андрей: "Внедрение дизайна без потерь"
 
Мальченко Александр: "От идей к действию"
Мальченко Александр: "От идей к действию"Мальченко Александр: "От идей к действию"
Мальченко Александр: "От идей к действию"
 
Бурика Станислав: "Забористый дизайн для POS"
Бурика Станислав: "Забористый дизайн для POS"Бурика Станислав: "Забористый дизайн для POS"
Бурика Станислав: "Забористый дизайн для POS"
 
Загоровская Екатерина: "Не рисковать и все учесть"
Загоровская Екатерина: "Не рисковать и все учесть"Загоровская Екатерина: "Не рисковать и все учесть"
Загоровская Екатерина: "Не рисковать и все учесть"
 
Бичева Яна: "Менторство и работа"
Бичева Яна: "Менторство и работа"Бичева Яна: "Менторство и работа"
Бичева Яна: "Менторство и работа"
 
гибкий процесс проектирования интерфейсов
гибкий процесс проектирования интерфейсовгибкий процесс проектирования интерфейсов
гибкий процесс проектирования интерфейсов
 
случаи из практики пма.
случаи из практики пма.случаи из практики пма.
случаи из практики пма.
 
где найти кнопку вложить душу в аутсорс конвеере
где найти кнопку вложить душу в аутсорс конвеерегде найти кнопку вложить душу в аутсорс конвеере
где найти кнопку вложить душу в аутсорс конвеере
 
When do mobile applications enhance business?
When do mobile applications enhance business?When do mobile applications enhance business?
When do mobile applications enhance business?
 
How To Create One App For All Platforms using PhoneGap
How To Create One App For All Platforms using PhoneGapHow To Create One App For All Platforms using PhoneGap
How To Create One App For All Platforms using PhoneGap
 
MobiDev_services_(fr)
MobiDev_services_(fr)MobiDev_services_(fr)
MobiDev_services_(fr)
 

Recently uploaded

Cyberprint. Dark Pink Apt Group [RU].pdf
Cyberprint. Dark Pink Apt Group [RU].pdfCyberprint. Dark Pink Apt Group [RU].pdf
Cyberprint. Dark Pink Apt Group [RU].pdf
Хроники кибер-безопасника
 
СИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdf
СИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdfСИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdf
СИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdf
Хроники кибер-безопасника
 
Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...
Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...
Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...
Ирония безопасности
 
2023 Q4. The Ransomware report. [RU].pdf
2023 Q4. The Ransomware report. [RU].pdf2023 Q4. The Ransomware report. [RU].pdf
2023 Q4. The Ransomware report. [RU].pdf
Хроники кибер-безопасника
 
ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...
ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...
ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...
Ирония безопасности
 
CVE. The Fortra's GoAnywhere MFT [RU].pdf
CVE. The Fortra's GoAnywhere MFT [RU].pdfCVE. The Fortra's GoAnywhere MFT [RU].pdf
CVE. The Fortra's GoAnywhere MFT [RU].pdf
Хроники кибер-безопасника
 

Recently uploaded (9)

MS Navigating Incident Response [RU].pdf
MS Navigating Incident Response [RU].pdfMS Navigating Incident Response [RU].pdf
MS Navigating Incident Response [RU].pdf
 
Cyberprint. Dark Pink Apt Group [RU].pdf
Cyberprint. Dark Pink Apt Group [RU].pdfCyberprint. Dark Pink Apt Group [RU].pdf
Cyberprint. Dark Pink Apt Group [RU].pdf
 
Malware. DCRAT (DARK CRYSTAL RAT) [RU].pdf
Malware. DCRAT (DARK CRYSTAL RAT) [RU].pdfMalware. DCRAT (DARK CRYSTAL RAT) [RU].pdf
Malware. DCRAT (DARK CRYSTAL RAT) [RU].pdf
 
Ransomware_Q3 2023. The report [RU].pdf
Ransomware_Q3 2023.  The report [RU].pdfRansomware_Q3 2023.  The report [RU].pdf
Ransomware_Q3 2023. The report [RU].pdf
 
СИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdf
СИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdfСИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdf
СИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdf
 
Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...
Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...
Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...
 
2023 Q4. The Ransomware report. [RU].pdf
2023 Q4. The Ransomware report. [RU].pdf2023 Q4. The Ransomware report. [RU].pdf
2023 Q4. The Ransomware report. [RU].pdf
 
ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...
ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...
ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...
 
CVE. The Fortra's GoAnywhere MFT [RU].pdf
CVE. The Fortra's GoAnywhere MFT [RU].pdfCVE. The Fortra's GoAnywhere MFT [RU].pdf
CVE. The Fortra's GoAnywhere MFT [RU].pdf
 

Вебинар "Оптимизация производительности мобильных веб-приложений"