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

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

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

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

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

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

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

Цели и руководящие принципы

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

  • Цели . Ключевые показатели эффективности, связанные с пользовательским опытом. Например, рисование касанием менее чем за 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 секунд.

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

Цели :

Руководящие принципы :

Инструменты для измерения рельсов

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

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

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

Следующие функции инструментов разработчика особенно актуальны:

Маяк

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

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

Ответ

Нагрузка

WebPageTest

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

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

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

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

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

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

  • Максимально увеличить время простоя основного потока.

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