Там нет недостатка в производительности advice, не так ли?Слон в комнате является тот факт, что это вызов для interpret: Все приходит с оговорками и оговорками, а иногда и один совет может показаться активно противоречит другому.
Такие фразы, как “DOM-медленно” или “Всегда использовать CSS анимации” делают для больших заголовков, но это правда, зачастую намного больше нюансов .
Возьмите что-то вроде времени загрузки, наиболее общие темы производительности на сегодняшний день.Проблема с загрузкой время, что некоторые люди измерения Скорость Index 1 , другие идут после первой краски, а третьи используют body.onload
DOMContentLoaded
или, возможно, некоторые другие события.Это редко согласуются.Когда дело доходит до других способов измерения производительности, вы, наверное, видели достаточно ориентиры JavaScript на всю жизнь.Вы можете также слышал, что вопросам 60 FPS.Но когда?Все время?Кажется нереальным .
Очень немногие из нас имеют неограниченное время, чтобы бросить в оптимизации работы, далеко от него, и мы должны критерии, которые помогут нам решить, что важно для оптимизации (и то, что это не так!).Когда все сказано будет сделано, мы хотим и должны четкие указания на то, что “мощные” означает нашей users, потому что это, кто мы строим для .
На команды Chrome, мы думали об этом, и мы придумали с моделью поставить пользователя обратно в середине истории производительности.Мы называем это RAIL модель .
Если вы хотите TL;! DR по железнодорожному поделиться с вашей командой, здесь вы идете
- ЖЕЛЕЗНОДОРОЖНЫЙ является model 2 для разрушения опыт пользователя в ключевых действий (например, из-под крана, сопротивления, прокрутки, нагрузка) .
- ЖЕЛЕЗНОДОРОЖНЫЙ обеспечивает производительность goals 3 для этих действий (например, нажмите, чтобы рисовать в соответствии 100 миллисекунд) .
- ЖЕЛЕЗНОДОРОЖНЫЙ обеспечивает структуру для размышлений о производительности, так что дизайнеры и разработчики могут надежно целевой высшего воздействия работу .
Перед погружением в то, что ЖЕЛЕЗНОДОРОЖНЫЙ включает и как это может быть полезно в вашем проекте, давайте шаг назад и взглянуть на то, где оно происходит от.Давайте начнем с наименее любимое слово каждый спектакль-мыслящий человек в целом мире: “медленно”.
“Низкая” Link
Меняется ли ДОМ медленно?Что о загрузке <script>
в <head>
?Анимации JavaScript медленнее, чем те, CSS, верно?Кроме того, делает операции 20 мс слишком долго?Что о 0,5 секунд?10__ секунд 0? |
В то время как верно, что различные операции принимают различные количества времени, чтобы завершить, это трудно сказать, объективно ли что-то медленно или быстро без context о том, когда это происходит.Например, код работает во время простоя, на сенсорном обработчика или в горячей пути игрового цикла каждый имеет различные требования к производительности.Иными словами, люди, использующие ваш сайт или приложение имеют разные производительности expectations для каждого из этих контекстов.Как и каждый аспект UX, мы строим для наших пользователей, и что they воспринимать то, что наиболее важно.На самом деле, номер один на Google, десять вещей, мы знаем, быть true 5 является “Фокус на потребителя и все остальное приложится.”
Запрашиваемая “Что делает медленный среднее ?,” потом, на самом деле неправильный вопрос.Вместо этого, мы должны спросить “ Что пользователь feel когда они взаимодействуют с вещами мы строим?”
Ввод пользователем в центре Performance Link
К счастью для нас, есть давние академические исследования HCI на эту тему, и вы, возможно, видели его раньше в работа Якоб Нильсен на время отклика limits __37 | 6 .Основываясь на этих порогов, и добавить дополнительный один для анимации (потому что это 2015, и мы все любим немного шоу-бизнеса), мы получаем следующее:
- 100 millisecondsОтветить на действия пользователя в этом временном окне, и они будут чувствовать себя, как результат немедленно.Любой дольше и, что связь между действия и reaction перерывы .
- 1 secondВ этом окне, все чувствуют себя частью природного и непрерывного прогрессирования задач.За ней, пользователь теряет фокус на задачи они выполняют.Для большинства пользователей в Интернете, загрузки страницы или меняющимся видом представляет задача .
- 16 millisecondsУчитывая, что экран обновляется 60 раз в секунду, это окно представляет собой время, чтобы получить один кадр на экран (профессор математики говорит
1000 ÷ 60 = ~16
).Люди исключительно хорошо отслеживания движения, и они не любят, когда их ожидание движенияне выполняется, либо через переменную частоту кадров или периодической остановке .
Эти пороги восприятия здорово, потому что они дают нам блоки нам нужно.То, что мы должны делать дальше привязать их к реальности.Давайте рассмотрим типичную взаимодействия, что наши пользователи имеют:
В этом кратком сессии были число различных взаимодействий:
- Ждет загрузки страницы
- Смотреть анимацию,
- Прокрутке страницы,
- Нажав значок
- Смотреть навигации оживить открыт
- Ждет загрузки страницы
- Смотреть анимацию,
- Прокрутке страницы .
Маркировка эти действия из видео даст нам что-то вроде этого:
Каждый из этих цветовых блоков представляет собой тип действия, и вы можете видеть, что есть четыре из них.И есть четыре буквы в железнодорожных.Любопытный .
Вот еще один пользователь путешествие, что мы можем сломать и этикетки, на этот раз от Голос Memos 9 :
Мы можем сломать взаимодействие с пользователем и классифицировать их в четырех различных областях.В Google, мы называем эти области RAIL, и каждый приходит со своими собственными целями производительности, которые основаны на порогах восприятия человека мы только что видели .
Рельса Производительность Model
ЖЕЛЕЗНОДОРОЖНЫЙ выступает за ответ, анимации, простоя и нагрузки .
Эти четыре различных областях являются способом рассуждать о действиях в ваших веб-сайтов и приложений.Если вам оптимизировать на основе целей деятельности каждого района (который мы получили от этих порогов восприятия), то ваши пользователи будут очень довольны .
Давайте посмотрим накаждый подробно .
1. Ответ Link
Если пользователь нажимает на кнопку, вы должны ответить на их щелчком мыши, прежде чем они заметили какие-либо задержки.Это относится к любому входу, на самом деле, будь то переключение контроль форма или начать анимацию.Если это не произойдет в течение разумного времени окне, то связь между действием и реакцией breaks и пользователь заметит .
Ответ все о латентности ввода: отставание между пальцем касаясь стекла и в результате удара пикселей экрана.Вы когда-нибудь постучал в чем-то и так долго, чтобы ответить, что вы начали интересно, зарегистрировано ли это ваш кран?Это exactly вид, что мы хотим, чтобы избежать
Основное взаимодействие ответа является:
- Tapping — когда краны пользователя или нажимает на кнопку или иконку (например, нажав значок меню, чтобы открыть кадром навигация) .
Чтобы ответить ответственно, мы бы:
- Обеспечить обратную связь в менее 100 milliseconds после первоначального ввода .
- В идеале, обратная связь будет показывать нужное состояние.Но если он собирается занять много времени, то индикатор загрузки или красящая для активного состояния будет делать.Главное, чтобы признать пользователя, чтобы они не начинают интересно ли было зарегистрировано водопроводной .
2. Анимация Link
Анимация является одним из столпов современной приложений, прокрутку, чтобы просмотреть переходы, и мы должны быть разумным, что мы делаем в этот период времени, потому что пользователь будет часто взаимодействовать непосредственно и замечаете, если частота кадров меняется.Тем не менее, пользователь ожидает очень гладкую обратную связь для более чем попадает под классическое определение анимации .
Анимация включает в себя следующее:
- Визуальная animationЭто включает в себя вход и выход анимации, изменения, анимация государственные и загрузка показатели .
- ScrollingЭто относится к тому, когда пользователь начинает прокрутки и отпускает и страница бросил .
- DragВ то время как мы должны реагировать на взаимодействия пользователя в соответствии с 100 миллисекунд, анимация может последовать в результате, например, когда панорамирование карту или защемления, чтобы увеличить .
Чтобы правильно анимировать каждый кадр анимации должен быть завершен в менее 16 milliseconds, тем самым достигая 60 FPS (1 second ÷ 60 = 16.6 milliseconds
) .
3. Холостой Link
Создание приложений, которые отвечают и анимировать также часто требует отсрочки работы. Оптимистичный UI 12 шаблоны использовать эту технику с большим эффектом.Все виды работ, которые должны быть завершены, скорее всего не need произойдет в критической временного окна таким же образом, как “ответ” или “нагрузкой”: Начальная загрузка функциональность комментарии, инициализации компонентов, поиск и сортировка данных, и Beaconingназад данные аналитика все несущественные элементы, которые мы можем сделать, когда браузер находится в режиме ожидания .
Для использования времени простоя мудро, работа сгруппированы в блоки по 50 миллисекунд.Зачем?Если пользователь уже начинают взаимодействовать, мы хотим, чтобы ответить на них в окне ответа 100 мс, а не застрять в середине шаблона 2 второй рендеринга .
4. Загрузите Link
Страница загрузка время хорошо протоптанной площадь исполнения.Мы наиболее заинтересованы в получении пользователя в первый значимый краски quickly.Как только это поставлено, приложение должно оставаться responsive;пользователь не должен столкнуться с проблемами при прокрутке, нажав или смотреть анимацию.Это может быть супер-сложной, особенно, когда большая часть работы для страницы акции один поток .
Чтобы загрузить страницы быстрее, мы стремимся, чтобы доставить первый значимый краску менее 1 секунды.Помимо этого, внимание пользователя начинает блуждать и восприятие дело с задачей на руку нарушается.Достижение этой цели требует приоритетности критическая рендеринга path 13 и часто отложить последующие второстепенные нагрузки в периоды простоя (или ленивый загрузкой их по запросу) .
Производительность Goals
Производительность, по существу, искусство избегать работы.И когда это неизбежно, делать какие-либо работают, как вы эффективным и своевременным максимально .
С этапов ЖЕЛЕЗНОДОРОЖНЫХ взаимодействия, изложенных, давайте подытожим целей:
Response | Animation | Idle | Страница Load |
---|---|---|---|
Нажмите, чтобы рисовать в менее 100 milliseconds . | Каждый кадр завершается в менее 16 milliseconds . | Используйте время простоя активно график работы . | Удовлетворить «ответ» цели при полной нагрузке . |
Перетащите рисовать в менее 16 milliseconds . | Завершить эту работу в 50 миллисекунд chunks . | Получить первый значимый краску 1000 milliseconds . |
Обратите внимание на измерения Link
Вот несколько полезных советов, по измерению вашего проектаПрофиль производительность: …
Если вы хотите прочитать полностью статью, посетите сайт наших спонсоров