Маяк изменчивости

На производительность веб-страниц влияет множество факторов. Показатели производительности Lighthouse имеют тенденцию меняться из-за свойственной веб-технологиям изменчивости, даже если на странице не было никаких изменений.

Источники изменчивости

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

Источник Влияние Типичный конечный пользователь Статистика PageSpeed Контролируемая лаборатория
Недетерминизм страницы Высокий ВЕРОЯТНЫЙ ВЕРОЯТНЫЙ ВЕРОЯТНЫЙ
Изменчивость локальной сети Высокий ВЕРОЯТНЫЙ ВРЯД ЛИ ВРЯД ЛИ
Изменчивость сети уровня 1 Середина ВОЗМОЖНЫЙ ВОЗМОЖНЫЙ ВОЗМОЖНЫЙ
Вариативность веб-сервера Низкий ВЕРОЯТНЫЙ ВЕРОЯТНЫЙ ВЕРОЯТНЫЙ
Вариативность клиентского оборудования Высокий ВЕРОЯТНЫЙ ВРЯД ЛИ ВРЯД ЛИ
Конфликт за ресурсы клиента Высокий ВЕРОЯТНЫЙ ВОЗМОЖНЫЙ ВРЯД ЛИ
Недетерминизм браузера Середина ОПРЕДЕЛЕННЫЙ ОПРЕДЕЛЕННЫЙ ОПРЕДЕЛЕННЫЙ

Ниже приведены более подробные описания источников отклонений и их влияния на наиболее вероятные комбинации среды выполнения Lighthouse + среды. Хотя подходы прикладного регулирования и имитации регулирования можно использовать в любой из этих трех сред, типичный конечный пользователь использует имитацию регулирования.

Страница Недетерминизм

Страницы могут содержать недетерминированную логику, которая меняет способ взаимодействия пользователя со страницей, например, A/B-тест, который меняет макет и загруженные ресурсы, или другое качество рекламы в зависимости от хода кампании. Это намеренный и неустранимый источник дисперсии. Если страница изменится таким образом, что это ухудшит производительность, Lighthouse сможет выявить этот случай. Единственное смягчение здесь заключается в том, что владелец сайта должен гарантировать, что одна и та же версия страницы тестируется между различными запусками.

Изменчивость локальной сети

Локальным сетям присуща изменчивость, связанная с потерей пакетов, переменной приоритезацией трафика и перегрузкой сети на последней миле. Пользователи с дешевыми маршрутизаторами и множеством устройств с ограниченной пропускной способностью обычно наиболее восприимчивы к этому. Применяемое регулирование частично смягчает эти эффекты, применяя минимальную задержку запроса и максимальную пропускную способность, которая маскирует основные повторы. Имитированное регулирование смягчает эти эффекты, воспроизводя сетевую активность самостоятельно.

Изменчивость сети уровня 1

Сетевые соединения, как правило, очень стабильны и оказывают минимальное влияние, но запросы между регионами, т. е. измерение производительности китайского сайта из США, могут начать испытывать высокую степень задержки, возникающую из-за сетевых переходов уровня 1. Применяемое регулирование частично маскирует эти эффекты с помощью регулирования сети. Имитированное регулирование смягчает эти эффекты, воспроизводя сетевую активность самостоятельно.

Вариативность веб-сервера

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

Вариативность клиентского оборудования

Аппаратное обеспечение, на котором загружается веб-страница, может существенно повлиять на производительность. Применяемое регулирование не может существенно помочь решить эту проблему. Имитированное регулирование частично решает эту проблему, ограничивая теоретическое время выполнения задач ЦП во время моделирования.

Конфликт за клиентские ресурсы

Другие приложения, работающие на том же компьютере во время работы Lighthouse, могут вызвать конкуренцию за ресурсы ЦП, памяти и сети. Вредоносные программы, расширения браузера и антивирусное программное обеспечение особенно сильно влияют на производительность Интернета. Мультитенантные серверные среды (такие как Travis, AWS и т. д.) также могут страдать от этих проблем. Одновременный запуск нескольких экземпляров Lighthouse также обычно искажает результаты из-за этой проблемы. Применяемое регулирование подвержено этой проблеме. Имитированное регулирование частично решает эту проблему, воспроизводя сетевую активность и ограничивая выполнение ЦП.

Недетерминизм браузера

Браузерам присуща вариативность выполнения задач, которая влияет на способ загрузки веб-страниц. Это неизбежно для примененного регулирования, поскольку в конце дня они просто сообщают обо всем, что наблюдает браузер. Имитированное регулирование может частично смягчить этот эффект, имитируя выполнение самостоятельно, используя только время выполнения задачи из браузера в его оценке.

Эффект стратегий регулирования

Ниже приведена таблица, содержащая несколько распространенных источников изменчивости показателей, типичное влияние, которое они оказывают на результаты, а также степень, в которой различные стратегии регулирования Lighthouse способны смягчить их эффект. Узнайте больше о различных стратегиях регулирования в нашей документации по регулированию .

Источник Влияние Имитация регулирования Прикладное регулирование Нет регулирования
Недетерминизм страницы Высокий НЕТ СМЯГЧЕНИЯ НЕТ СМЯГЧЕНИЯ НЕТ СМЯГЧЕНИЯ
Изменчивость локальной сети Высокий СМЯГЧЕН ЧАСТИЧНО СМЯГЧЕНО НЕТ СМЯГЧЕНИЯ
Изменчивость сети уровня 1 Середина СМЯГЧЕН ЧАСТИЧНО СМЯГЧЕНО НЕТ СМЯГЧЕНИЯ
Вариативность веб-сервера Низкий НЕТ СМЯГЧЕНИЯ ЧАСТИЧНО СМЯГЧЕНО НЕТ СМЯГЧЕНИЯ
Вариативность клиентского оборудования Высокий ЧАСТИЧНО СМЯГЧЕНО НЕТ СМЯГЧЕНИЯ НЕТ СМЯГЧЕНИЯ
Конфликт за ресурсы клиента Высокий ЧАСТИЧНО СМЯГЧЕНО НЕТ СМЯГЧЕНИЯ НЕТ СМЯГЧЕНИЯ
Недетерминизм браузера Середина ЧАСТИЧНО СМЯГЧЕНО НЕТ СМЯГЧЕНИЯ НЕТ СМЯГЧЕНИЯ

Стратегии борьбы с дисперсией

Изолируйте внешние факторы

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

Если ресурсы вашего компьютера очень ограничены или создать чистую среду сложно, воспользуйтесь размещенной лабораторной средой, такой как PageSpeed ​​Insights или WebPageTest, чтобы запустить тесты за вас. В ситуациях непрерывной интеграции по возможности используйте выделенные серверы. Свободные среды CI и «расширяемые» экземпляры обычно весьма нестабильны.

Запустите Lighthouse несколько раз

При создании порогов неудачи, умственных или программных, используйте совокупные значения, такие как медиана, 90-й процентиль или даже минута, вместо отдельных тестов.

Средний балл Lighthouse, равный 5 запускам, в два раза стабильнее, чем 1 запуск, а такие инструменты, как pwmetrics , могут запускать Lighthouse автоматически. Использование минимального значения также является большим улучшением по сравнению с отсутствием тестирования вообще, и его невероятно легко реализовать: просто запустите Lighthouse до 5 раз, пока результат не пройдет!

Обратная связь

Была ли эта страница полезной?
Да
Что самое лучшее на этой странице?
Это помогло мне достичь моей цели(ей)
Спасибо за ваш отзыв! Если у вас есть конкретные идеи по улучшению этой страницы, создайте проблему .
Там была нужная мне информация
Спасибо за ваш отзыв! Если у вас есть конкретные идеи по улучшению этой страницы, создайте проблему .
Там была точная информация
Спасибо за ваш отзыв! Если у вас есть конкретные идеи по улучшению этой страницы, создайте проблему .
Было легко читать
Спасибо за ваш отзыв! Если у вас есть конкретные идеи по улучшению этой страницы, создайте проблему .
Что-то другое
Спасибо за ваш отзыв! Если у вас есть конкретные идеи по улучшению этой страницы, создайте проблему .
Нет
Что было худшего на этой странице?
Это не помогло мне достичь моей цели(ей)
Спасибо за ваш отзыв! Если у вас есть конкретные идеи по улучшению этой страницы, создайте проблему .
Отсутствовала нужная мне информация
Спасибо за ваш отзыв! Если у вас есть конкретные идеи по улучшению этой страницы, создайте проблему .
Там была неточная информация
Спасибо за ваш отзыв! Если у вас есть конкретные идеи по улучшению этой страницы, создайте проблему .
было тяжело читать
Спасибо за ваш отзыв! Если у вас есть конкретные идеи по улучшению этой страницы, создайте проблему .
Что-то другое
Спасибо за ваш отзыв! Если у вас есть конкретные идеи по улучшению этой страницы, создайте проблему .