Измеряйте производительность с помощью модели RAIL

RAIL — это модель производительности , ориентированная на пользователя , которая обеспечивает структуру для размышлений о производительности. Модель разбивает пользовательский опыт на ключевые действия (например, касание, прокрутка, загрузка) и помогает определить цели производительности для каждого из них.

RAIL обозначает четыре различных аспекта жизненного цикла веб-приложения: ответ, анимацию, бездействие и загрузку. У пользователей разные ожидания производительности для каждого из этих контекстов, поэтому цели производительности определяются на основе контекста и UX-исследований того, как пользователи воспринимают задержки .

Четыре части модели производительности RAIL: отклик, анимация, ожидание и загрузка.
4 части модели производительности RAIL

Сосредоточьтесь на пользователе

Сделайте пользователей центром внимания ваших усилий по повышению производительности. В таблице ниже описаны ключевые показатели того, как пользователи воспринимают задержки производительности:

Восприятие пользователем задержек производительности
от 0 до 16 мс Пользователи исключительно хорошо отслеживают движение, и им не нравится, когда анимация не плавная. Они воспринимают анимацию как плавную, пока каждую секунду отображается 60 новых кадров. Это 16 мс на кадр, включая время, необходимое браузеру для отрисовки нового кадра на экране, оставляя приложению около 10 мс на создание кадра.
от 0 до 100 мс Реагируйте на действия пользователя в течение этого временного окна, и пользователи почувствуют, что результат не заставит себя ждать. Еще немного — и связь между действием и противодействием разрывается.
от 100 до 1000 мс В этом окне все воспринимается как часть естественного и непрерывного развития задач. Для большинства пользователей в Интернете загрузка страниц или изменение представлений представляют собой задачу.
1000 мс или более За пределами 1000 миллисекунд (1 секунды) пользователи теряют концентрацию на выполняемой задаче.
10000 мс или более По истечении 10 000 миллисекунд (10 секунд) пользователи разочаровываются и, скорее всего, откажутся от задач. Они могут вернуться, а могут и не вернуться позже.

Цели и рекомендации

В контексте RAIL термины «цели» и «руководящие принципы» имеют конкретное значение:

  • Цели . Ключевые показатели производительности, связанные с пользовательским опытом. Например, нажмите, чтобы нарисовать менее чем за 100 миллисекунд. Поскольку человеческое восприятие относительно постоянно, эти цели вряд ли изменятся в ближайшее время.

  • Методические рекомендации . Рекомендации, которые помогут достичь целей. Они могут зависеть от текущего оборудования и условий сетевого подключения и, следовательно, могут меняться со временем.

Ответ: обработка событий менее чем за 50 мс.

Цель : завершить переход, инициированный пользователем, в течение 100 мс, чтобы пользователи чувствовали, что взаимодействие происходит мгновенно.

Методические рекомендации :

  • Чтобы обеспечить видимый ответ в течение 100 мс, обрабатывайте события ввода пользователя в течение 50 мс. Это относится к большинству входных данных, таких как нажатие кнопок, переключение элементов управления формой или запуск анимации. Это не относится к сенсорному перетаскиванию или прокрутке.

  • Хотя это может показаться нелогичным, не всегда правильно реагировать на вводимые пользователем данные немедленно. Вы можете использовать это окно в 100 мс для выполнения другой дорогостоящей работы, но будьте осторожны, чтобы не заблокировать пользователя. Если возможно, работайте в фоновом режиме.

  • Всегда оставляйте отзыв о действиях, выполнение которых занимает более 50 мс.

50 мс или 100 мс?

Цель состоит в том, чтобы ответить на ввод менее чем за 100 мс, так почему же наш бюджет составляет всего 50 мс? Это связано с тем, что помимо обработки ввода обычно выполняется и другая работа, и эта работа занимает часть времени, доступного для приемлемого ответа на ввод. Если во время простоя приложение выполняет работу рекомендованными фрагментами по 50 мс, это означает, что ввод может быть поставлен в очередь на срок до 50 мс, если он происходит во время одного из этих фрагментов работы. Учитывая это, можно с уверенностью предположить, что только оставшиеся 50 мс доступны для фактической обработки ввода. Этот эффект визуализируется на диаграмме ниже, которая показывает, как входные данные, полученные во время простоя задачи, помещаются в очередь, сокращая доступное время обработки:

Диаграмма, показывающая, как вводимые данные, полученные во время простоя задачи, помещаются в очередь, что сокращает доступное время обработки ввода до 50 мс.
Как простаивающие задачи влияют на бюджет ответа на вход.

Анимация: создать кадр за 10 мс.

Цели :

  • Создавайте каждый кадр анимации за 10 мс или меньше. Технически максимальный бюджет для каждого кадра составляет 16 мс (1000 мс / 60 кадров в секунду ≈ 16 мс), но браузерам требуется около 6 мс для рендеринга каждого кадра, отсюда и норматив 10 мс на кадр.

  • Стремитесь к визуальной плавности. Пользователи замечают, когда частота кадров меняется.

Методические рекомендации :

  • В точках повышенного напряжения, таких как анимация, главное — ничего не делать там, где можно, и абсолютный минимум там, где нельзя. По возможности используйте отклик в 100 мс для предварительного расчета дорогостоящей работы, чтобы максимизировать свои шансы на достижение 60 кадров в секунду.

  • См. «Производительность рендеринга» для получения информации о различных стратегиях оптимизации анимации.

  • Визуальные анимации, такие как входы и выходы, анимация и индикаторы загрузки.
  • Прокрутка. Сюда входит и перелистывание, когда пользователь начинает прокручивать, затем отпускает, и страница продолжает прокручиваться.
  • Перетаскивание. Анимации часто следуют за действиями пользователя, такими как панорамирование карты или масштабирование.

Простой: максимизируйте время простоя

Цель : максимально увеличить время простоя, чтобы увеличить вероятность того, что страница ответит на ввод пользователя в течение 50 мс.

Методические рекомендации :

  • Используйте время простоя для завершения отложенной работы. Например, для начальной загрузки страницы загружайте как можно меньше данных, а затем используйте время простоя для загрузки остальных.

  • Выполнять работу во время простоя за 50 мс или меньше. Если вы продержитесь дольше, вы рискуете помешать приложению реагировать на ввод пользователя в течение 50 мс.

  • Если пользователь взаимодействует со страницей во время простоя, взаимодействие с пользователем всегда должно иметь наивысший приоритет и прерывать работу во время простоя.

Загрузка: доставляйте контент и становитесь интерактивным менее чем за 5 секунд.

Когда страницы загружаются медленно, внимание пользователей отвлекается, и пользователи воспринимают задачу как невыполненную. Сайты, которые загружаются быстро, имеют более продолжительные средние сеансы, более низкие показатели отказов и более высокую видимость рекламы .

Цели :

Методические рекомендации :

Инструменты для измерения RAIL

Существует несколько инструментов, которые помогут вам автоматизировать измерения RAIL. Какой из них вы используете, зависит от того, какой тип информации вам нужен и какой тип рабочего процесса вы предпочитаете.

Инструменты разработчика Chrome

Chrome DevTools обеспечивает углубленный анализ всего, что происходит во время загрузки или запуска вашей страницы. См. раздел «Начало работы с анализом производительности среды выполнения», чтобы ознакомиться с пользовательским интерфейсом панели «Производительность» .

Следующие функции DevTools особенно актуальны:

Маяк

Lighthouse доступен в Chrome DevTools, на PageSpeed ​​Insights , в виде расширения Chrome, в виде модуля Node.js и в WebPageTest. Вы даете ему URL-адрес, он имитирует устройство среднего класса с медленным 3G-соединением, запускает серию аудитов на странице, а затем предоставляет вам отчет о производительности нагрузки, а также предложения о том, как ее улучшить.

Особенно актуальны следующие проверки:

Ответ

Нагрузка

Веб-ПейджТест

WebPageTest — это инструмент веб-производительности, который использует реальные браузеры для доступа к веб-страницам и сбора показателей времени. Введите URL-адрес на странице webpagetest.org/easy , чтобы получить подробный отчет о производительности загрузки страницы на реальном устройстве Moto G4 с медленным соединением 3G. Вы также можете настроить его для включения аудита Lighthouse.

Краткое содержание

RAIL — это призма, позволяющая рассматривать пользовательский опыт веб-сайта как путешествие, состоящее из различных взаимодействий. Поймите, как пользователи воспринимают ваш сайт, чтобы установить цели по производительности, которые максимально повлияют на взаимодействие с пользователем.

  • Сосредоточьтесь на пользователе.

  • Реагируйте на ввод пользователя менее чем за 100 мс.

  • Создание кадра менее чем за 10 мс при анимации или прокрутке.

  • Максимизируйте время простоя основного потока.

  • Загрузка интерактивного контента менее чем за 5000 мс.