Как выглядит сообщение в консоли браузера о просмотре метрики

Обновлено: 02.12.2024

Научитесь экономично собирать, обрабатывать и архивировать журналы.

Загрузите, чтобы узнать больше

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

Отслеживайте журналы и ошибки консоли JavaScript для всех ваших пользователей

Несмотря на то, что некоторые ошибки внешнего интерфейса могут не иметь никакого влияния на пользователя, другие могут вызвать разочарование у посетителей вашего веб-сайта. С библиотекой ведения журналов Datadog на стороне клиента вы можете автоматически отслеживать ошибки консоли JavaScript в режиме реального времени и следить за тем, чтобы эти проблемы не ухудшали взаимодействие с пользователем (например, кнопка не работала должным образом) или инициативы по увеличению дохода (например, реклама не загружается).

Журналы ошибок консоли JavaScript включают трассировку стека, которая может помочь вам устранить источник любой проблемы. А поскольку журналы полностью интегрированы с остальной частью Datadog, вы можете просматривать их в контексте со всеми другими данными мониторинга, которые вы уже собираете из связанных служб.

Анализ журналов ошибок внешнего интерфейса для выявления проблем

После того, как вы соберете и централизуете журналы консоли JavaScript с помощью Datadog, вы сможете проанализировать их, чтобы получить более глубокое представление о том, когда и где обычно появляются ошибки внешнего интерфейса — является ли ошибка ограниченной версией веб-браузера или она коррелирует с определенной версией веб-браузера. развертывание этой службы? Журналы браузера включают в себя ключевые атрибуты (например, браузер/агент пользователя, IP-адрес клиента и URL-адрес), которые можно проанализировать, чтобы определить, какие типы клиентов, географические регионы и конечные точки чаще всего вызывают ошибки. С помощью Log Analytics вы можете узнать, связана ли ошибка с определенным подмножеством пользователей (в зависимости от используемого ими браузера, устройства и семейства ОС), и использовать эту информацию, чтобы немедленно приступить к устранению проблемы.

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

Записывать пользовательские события

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

После того как вы используете библиотеку ведения журналов JavaScript Datadog для добавления настраиваемых атрибутов в свои журналы, вы можете визуализировать пользовательские события (например, сколько кликов по объявлениям вы получаете на определенной странице) или тестировать различные места размещения рекламы на нескольких страницах. .

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

Как собирать журналы консоли JavaScript с помощью Datadog

Библиотека ведения журналов JavaScript Datadog автоматически оптимизирует использование сети, пересылая журналы в ваш аккаунт Datadog.В этом разделе мы покажем вам, как настроить сбор журналов браузера с помощью Datadog.

Выявляйте и устраняйте проблемы, с которыми сталкиваются пользователи, отслеживая журналы Javascript с помощью Datadog.

Создайте токен клиента и настройте сбор журналов

Прежде чем вы сможете собирать и пересылать журналы браузера в Datadog, вам необходимо создать токен клиента. Клиентские токены специально разработаны для того, чтобы вы могли безопасно отправлять журналы веб-браузера в Datadog. Вы можете сгенерировать клиентский токен на странице конфигурации API вашей учетной записи Datadog, как показано ниже.

Теперь вы можете настроить регистратор для использования этого токена для пересылки журналов браузера в Datadog. Фрагмент кода ниже демонстрирует, как вы можете инициализировать регистратор Datadog и добавить свой клиентский токен в свой HTML. Чтобы автоматически собирать журналы ошибок JavaScript и журналы консоли, задайте для forwardErrorsToLogs значение true , как показано ниже. Это настроит библиотеку на автоматический сбор сообщений console.log(), а также любых ошибок, которые регистрируются на консоли.

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

По умолчанию регистратор Datadog автоматически добавляет атрибут session_id, чтобы вы могли легко унифицировать любые журналы консоли JavaScript, полученные из одного и того же сеанса браузера. Datadog также регистрирует другие атрибуты по умолчанию, чтобы предоставить больше контекста для каждого журнала браузера, который вы собираете: URL-адрес, пользовательский агент и IP-адрес клиента.

Записывайте пользовательские события с помощью Datadog

Помимо автоматического сбора журналов консоли JavaScript, вы можете использовать библиотеку ведения журналов JavaScript Datadog, чтобы регистрировать любые действия пользователей, полезные для вашего бизнеса. В следующем примере показано, как настроить регистратор ( DD_LOGS ) для захвата сообщения уровня INFO, которое включает среду и идентификатор пользователя в качестве настраиваемых атрибутов JSON:

Добавление этой строки позволяет отслеживать активность регистрации: каждый раз, когда нажимается кнопка регистрации, библиотека ведения журналов JavaScript Datadog создает журнал на уровне статуса INFO с настраиваемыми атрибутами (env и user_id). Журнал также будет включать атрибуты по умолчанию (описывающие пользовательский агент, браузер, идентификатор сеанса и семейство ОС клиента JavaScript), а также любые глобальные метаданные (например, request_id ), которые вы добавили в регистратор.

Анализируйте журналы JavaScript, которые важны для вашей команды

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

Каждая команда затем может создавать свои собственные журналы следующим образом:

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

Полная видимость стека с помощью журналов JavaScript

Журналы консоли JavaScript и пользовательские журналы браузера обеспечивают еще более глубокий контекст данных в реальном времени, которые вы уже отслеживаете с помощью Datadog, — от показателей инфраструктуры до трассировок запросов APM и журналов доступа к веб-серверу. А если вы используете браузерные тесты Datadog для упреждающего мониторинга синтетических запросов из различных глобальных местоположений, журналы консоли JavaScript могут помочь вам отследить источник проблем с производительностью, с которыми сталкиваются пользователи.

Добавив журналы консоли JavaScript на платформу Datadog, вы сможете получить полное представление о проблемах внешнего и внутреннего интерфейса, что позволит вам постоянно улучшать доступность и производительность ваших сервисов.

Начать мониторинг журналов консоли JavaScript и пользовательских событий

Мы рады добавить сбор журналов JavaScript на стороне клиента на платформу Datadog, и наши команды усердно работают над добавлением еще большего количества функций мониторинга реальных пользователей.Ознакомьтесь с нашей документацией, чтобы начать собирать журналы браузера. Если вы еще не используете Datadog, подпишитесь на бесплатную пробную версию, чтобы отслеживать журналы браузера наряду с серверными журналами, метриками и трассировками на одной платформе.

Примечание. Чтобы узнать, как ускорить загрузку страниц, см. статью Оптимизация скорости веб-сайта.

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

Внимание! Это руководство основано на Chrome 59. Если вы используете другую версию Chrome, пользовательский интерфейс и функции DevTools могут отличаться. Проверьте chrome://help, чтобы узнать, какая версия Chrome у вас установлена.

В этом руководстве вы открываете DevTools на активной странице и используете панель «Производительность», чтобы найти узкое место производительности на странице.

Откройте Google Chrome в режиме инкогнито. Режим инкогнито гарантирует, что Chrome работает в чистом состоянии. Например, если у вас установлено много расширений, эти расширения могут создавать помехи при измерении производительности.

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

Нажмите Command+Option+I (Mac) или Control+Shift+I (Windows, Linux), чтобы открыть DevTools.

Рис. 1. Демо слева и DevTools справа

Примечание. Для остальных снимков экрана DevTools открепляется в отдельное окно, чтобы вы могли лучше видеть его содержимое.

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

В DevTools перейдите на вкладку "Производительность".

Убедитесь, что флажок "Скриншоты" установлен.

Нажмите Настройки захвата . DevTools показывает настройки, связанные с тем, как он фиксирует показатели производительности.

Для ЦП выберите 2-кратное замедление. DevTools дросселирует ваш ЦП так, что он работает в 2 раза медленнее, чем обычно.

Рис. 2. Дросселирование ЦП, обведено синим цветом

Примечание. При тестировании других страниц, если вы хотите убедиться, что они хорошо работают на недорогих мобильных устройствах, установите замедление ЦП на 20-кратное замедление. Эта демонстрация плохо работает с 20-кратным замедлением, поэтому она использует 2-кратное замедление только в учебных целях.

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

Нажимайте кнопку "Добавить 10", пока синие квадраты не станут двигаться заметно медленнее, чем раньше. На мощном компьютере это может занять около 20 кликов.

Нажмите "Оптимизировать". Синие квадраты должны двигаться быстрее и плавнее.

Примечание. Если вы не видите заметной разницы между оптимизированной и неоптимизированной версиями, попробуйте нажать "Вычесть 10" несколько раз и повторить попытку. Если вы добавите слишком много синих квадратов, вы просто перегрузите ЦП и не увидите большой разницы в результатах для двух версий.

Нажмите «Отменить оптимизацию». Синие квадраты снова двигаются медленнее и с большим рывком.

При запуске оптимизированной версии страницы синие квадраты перемещаются быстрее. Почему это? Обе версии должны перемещать каждый квадрат на одинаковое расстояние за одинаковое время. Сделайте запись на панели «Производительность», чтобы узнать, как определить узкое место производительности в неоптимизированной версии.

В DevTools нажмите «Запись» . DevTools фиксирует показатели производительности по мере запуска страницы.

Рисунок 3. Профилирование страницы

Подождите несколько секунд.

Нажмите «Стоп». DevTools останавливает запись, обрабатывает данные, а затем отображает результаты на панели «Производительность».

Рисунок 4. Результаты профиля

Вау, это огромное количество данных. Не волнуйтесь, скоро все станет понятнее.

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

Основным показателем для измерения производительности любой анимации является количество кадров в секунду (FPS). Пользователи довольны, когда анимация работает со скоростью 60 кадров в секунду.

Посмотрите на график FPS. Всякий раз, когда вы видите красную полосу над FPS, это означает, что частота кадров упала настолько низко, что это, вероятно, вредит пользователю. Как правило, чем выше зеленая полоса, тем выше FPS.

Рисунок 5. Диаграмма FPS, обведенная синим цветом

Под диаграммой FPS вы видите диаграмму ЦП. Цвета на диаграмме ЦП соответствуют цветам на вкладке «Сводка» в нижней части панели «Производительность». Тот факт, что диаграмма ЦП заполнена цветом, означает, что ЦП был загружен во время записи. Всякий раз, когда вы видите, что ЦП перегружен в течение длительного времени, это сигнал к тому, чтобы найти способы выполнять меньше работы.

Рис. 6. Диаграмма ЦП и вкладка "Сводка", обведенные синим цветом

Наведите указатель мыши на диаграммы FPS, CPU или NET. DevTools показывает скриншот страницы в этот момент времени. Двигайте мышью влево и вправо, чтобы воспроизвести запись. Это называется прокруткой и полезно для ручного анализа хода анимации.

Рис. 7. Скриншот страницы на отметке 2 000 мс записи

В разделе "Кадры" наведите указатель мыши на один из зеленых квадратов. DevTools показывает вам FPS для этого конкретного кадра. Каждый кадр, вероятно, намного ниже целевого значения 60 кадров в секунду.

Рис. 8. Наведение курсора на фрейм

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

Еще один удобный инструмент – счетчик FPS, который в режиме реального времени дает оценку FPS при просмотре страницы.

Нажмите Command+Shift+P (Mac) или Control+Shift+P (Windows, Linux), чтобы открыть меню команд.

Начните вводить Rendering в меню команд и выберите Show Rendering.

На вкладке "Визуализация" включите счетчик кадров в секунду. Новое наложение появится в правом верхнем углу окна просмотра.

Рисунок 9. Индикатор FPS

Отключите счетчик кадров в секунду и нажмите Escape, чтобы закрыть вкладку "Визуализация". Вы не будете использовать его в этом руководстве.

Теперь, когда вы измерили и убедились, что анимация не работает должным образом, следующий вопрос, на который нужно ответить: почему?

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

Рис. 10. Вкладка "Сводка", выделенная синим цветом

Разверните основной раздел. DevTools показывает вам пламенную диаграмму активности в основном потоке с течением времени. Ось X представляет запись с течением времени. Каждая полоса представляет собой событие. Более широкая полоса означает, что событие заняло больше времени. Ось Y представляет стек вызовов. Когда вы видите события, расположенные друг над другом, это означает, что верхние события вызвали нижние события.

Рисунок 11. Основной раздел, обведенный синим цветом

В записи много данных. Увеличьте масштаб одного события Animation Frame Fired, щелкнув, удерживая и перетаскивая указатель мыши по обзору, который представляет собой раздел, включающий диаграммы FPS, CPU и NET. В разделе «Основной» и на вкладке «Сводка» отображается информация только для выбранной части записи.

Рисунок 12. Увеличение масштаба одного события Animation Frame Fired

Примечание. Другой способ масштабирования — выделить основной раздел, щелкнув его фон или выбрав событие, а затем нажать клавиши W, A, S и D.

Обратите внимание на красный треугольник в правом верхнем углу события Animation Frame Fired. Каждый раз, когда вы видите красный треугольник, это предупреждение о возможной проблеме, связанной с этим событием.

Примечание. Событие Animation Frame Fired возникает всякий раз, когда выполняется обратный вызов requestAnimationFrame().

Нажмите на событие Animation Frame Fired.На вкладке «Сводка» теперь отображается информация об этом событии. Обратите внимание на раскрывающуюся ссылку. Щелчок по нему приводит к тому, что DevTools выделяет событие, которое инициировало событие Animation Frame Fired. Также обратите внимание на ссылку app.js:94. Нажав на нее, вы перейдете к соответствующей строке исходного кода.

Рис. 13. Дополнительная информация о событии Animation Frame Fired

Примечание. После выбора события используйте клавиши со стрелками, чтобы выбрать события рядом с ним.

Под событием app.update есть несколько фиолетовых событий. Если бы они были шире, то на каждом из них мог бы быть красный треугольник. Щелкните одно из фиолетовых событий Layout сейчас. DevTools предоставляет дополнительные сведения о событии на вкладке «Сводка». Действительно, есть предупреждение о принудительной перекомпоновке (другое слово для макета).

На вкладке "Сводка" нажмите ссылку app.js:70 в разделе "Принудительно макет". DevTools перенесет вас к строке кода, которая заставила макет.

Рисунок 13. Строка кода, вызвавшая принудительное размещение

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

Фу! Это было много, чтобы принять во внимание, но теперь у вас есть прочная основа в основном рабочем процессе для анализа производительности во время выполнения. Хорошая работа.

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

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

Основой для понимания производительности является модель RAIL. Эта модель учит вас показателям производительности, которые наиболее важны для ваших пользователей. Дополнительные сведения см. в разделе «Измерение производительности с помощью модели RAIL».

Чтобы лучше освоиться с панелью "Производительность", нужно практиковаться. Попробуйте профилировать свои собственные страницы и проанализировать результаты. Если у вас есть какие-либо вопросы о результатах, откройте вопрос Stack Overflow с тегом google-chrome-devtools . Если возможно, включите скриншоты или ссылки на воспроизводимые страницы.

Чтобы стать экспертом в области производительности во время выполнения, вам нужно узнать, как браузер преобразует HTML, CSS и JS в пиксели на экране. Лучше всего начать с обзора производительности рендеринга. Анатомия рамы раскрывает еще больше деталей.

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

Панель сведений о запросе появляется, когда вы щелкаете сетевой запрос в списке запросов. На этой панели представлена ​​более подробная информация о запросе.

Подробности сетевого запроса¶

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

Снимки экрана и описания в этом разделе относятся к Firefox 78. Более ранние версии выглядели аналогично, но могли не включать некоторые функции.

Вкладки в верхней части этой панели позволяют переключаться между следующими страницами:

Сообщения (только для элементов WebSocket)

Трассировка стека (только если запрос имеет трассировку стека, например, скрипт вызывается другим скриптом).

Нажатие значка в правом конце панели инструментов закрывает панель сведений и возвращает вас в представление списка.

Вкладка "Заголовки"¶

На вкладке "Заголовки" есть панель инструментов, за которой следуют три основных раздела.

Информация о запросе

Статус: код статуса ответа на запрос; нажмите «?» значок, чтобы перейти на справочную страницу для получения кода состояния.

Передано: объем данных, переданных по запросу.

Политика Referrer: значение заголовка Referrer-policy.

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

Панель инструментов "Заголовки"¶

С помощью панели инструментов "Заголовки" вы можете:

Отфильтруйте заголовки в разделах "Заголовки ответа" и "Заголовки запроса".

Заблокируйте домен, связанный с этим запросом. Домен будет добавлен на боковую панель блокировки .

Отправить запрос еще раз. Кнопка Отправить повторно открывает меню с двумя пунктами:

Отправить повторно: повторно отправляет запрос.

Редактировать и повторно отправить: включает режим редактирования, в котором вы можете изменить метод, URL-адрес, заголовки запроса или текст запроса. Нажмите «Отправить», чтобы отправить измененный запрос, или «Отмена», чтобы отменить редактирование.

Запросить информацию¶

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

Схема: схема, используемая в URL

Хост: сервер, участвующий в запросе

Имя файла: полный путь к запрошенному файлу

Адрес: IP-адрес хоста

Следующая информация отображается как в свернутом, так и в развернутом состоянии:

Передано: объем данных, переданных с запросом

Политика реферера, которая определяет, какая информация реферера, отправляемая в заголовке Referer, должна быть включена в запросы. (Описание возможных значений см. в Referrer-Policy)

Блокировка: если запрос направлен на сайт, связанный с известным средством отслеживания, отображается значок и сообщение; в противном случае это поле не отображается.

Заголовки ответа¶

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

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

Вы можете скопировать часть или весь заголовок ответа в формате JSON с помощью контекстного меню:

Если выбрать Копировать, будет скопировано одно ключевое слово и пара значений. Если вы выберете «Копировать все», весь заголовок будет скопирован в формате JSON, что даст вам что-то вроде этого (после обработки результатов через валидатор JSON):

Заголовки запроса¶

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

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

Вкладка «Файлы cookie»

Атрибут samesite отображается начиная с Firefox 62 (ошибка 1452715).

Вкладка "Запрос"¶

Запрос показывает полные параметры запроса по умолчанию в форматированном виде:

Переключите переключатель, чтобы отобразить необработанное представление:

Вкладка "Ответ"¶

Полное содержание ответа. Если ответ представляет собой HTML, JS или CSS, он будет показан в виде текста:

Добавлен переключатель для переключения между необработанным и форматированным представлением ответа (ошибка 1693147). В предыдущем примере HTML используется форматированное представление. Когда переключатель включен, будет включено представление необработанных ответов:

Если ответ в формате JSON, он будет показан как объект для проверки:

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

Если ответ представляет собой изображение, на вкладке отображается предварительный просмотр:

Если ответ представляет собой веб-шрифт, на вкладке также отображается предварительный просмотр:

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

Вкладка «Кэш»¶

Если ответ кэширован (например, 304), на вкладке "Кэш" отображаются сведения об этом кэшированном ресурсе.

Эти сведения включают:

Последнее получение: дата последнего извлечения ресурса

Число извлечений: количество извлечений ресурса в текущем сеансе

Размер данных: размер ресурса.

Последнее изменение: дата последнего изменения ресурса.

Срок действия: дата истечения срока действия ресурса.

Устройство: устройство, с которого был получен ресурс (например, «диск»).

Предварительный просмотр HTML¶

Если ответ представляет собой HTML, предварительный просмотр отображаемого HTML отображается на вкладке "Ответ" над полезной нагрузкой ответа.

Вкладка «Время»¶

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

Эта вкладка может включать следующие разделы.

В очереди, запущено, загружено¶

Новое в Firefox 72: теперь мы показываем следующие временные интервалы в верхней части вкладки «Временные интервалы», что значительно упрощает анализ зависимостей:

В очереди: ресурс поставлен в очередь на загрузку.

Начало: когда ресурс начал загружаться.

Загружено: после завершения загрузки ресурса.

В будущих версиях эта информация также будет отображаться при наведении курсора на записи на графике временной шкалы сетевого монитора (см. ошибку 1580493).

Время запроса¶

Время, проведенное в очереди в ожидании подключения к сети.

Время, необходимое для разрешения имени хоста.

Время, необходимое для создания TCP-соединения.

Ожидание ответа от сервера.

Время, затраченное на чтение всего ответа с сервера (или кэша).

Время сервера¶

Новое в Firefox 71, в разделе Server Timing указана вся информация, представленная в заголовке Server-Timing — она используется для отображения любых записанных вами показателей времени внутреннего сервера (например, чтение/запись базы данных). , процессорное время, доступ к файловой системе и т. д.).

Заголовок содержит ряд описаний и продолжительности, которые могут быть любыми на ваше усмотрение. Например, на приведенном выше снимке экрана заголовок Server-Timing выделенного запроса содержит 4 элемента: данные, разметка, итого и промах. .

Вкладка «Безопасность»¶

На вкладке "Безопасность" отображается предупреждение о уязвимостях в системе безопасности. В настоящее время он предупреждает вас о двух недостатках:

Использование SSLv3 вместо TLS

Использование шифра RC4

Вкладка трассировки стека¶

Трассировка стека отображается на вкладке Трассировка стека для ответов, которые, конечно же, имеют трассировку стека.

Функции сетевого монитора¶

В следующих статьях рассматриваются различные аспекты использования сетевого монитора:

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

Для каждой цели необходим аудит.

• Уменьшите требования к хранилищу для веб-приложений, что особенно важно для пользователей устройств с низкими характеристиками.

• Сокращение расходов на хостинг и обслуживание

• Сокращение расходов на обслуживание

Существует множество инструментов и методов аудита веб-сайтов:

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

Ниже вы узнаете, какой подход подходит для каждого типа аудита.

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

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

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

Запись запросов ресурсов: количество, размер, тип и время

Хорошим началом аудита сайта является проверка страниц с помощью сетевых инструментов вашего браузера. Если вы не знаете, как это сделать, обратитесь к руководству по началу работы с сетевой панелью Chrome DevTools. Аналогичные инструменты доступны для Firefox, Safari, Internet Explorer и Edge.

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

Прежде чем приступить к аудиту использования сети, обязательно отключите кеш браузера, чтобы получить точную статистику производительности при первой загрузке. Если вы уже выполняете кеширование через сервис-воркер, очистите хранилище Cache API. Вы можете использовать окно в режиме инкогнито (частное), чтобы не беспокоиться об отключении кеша браузера или удалении ранее кэшированных записей.

Вот некоторые основные функции и показатели, которые следует проверять с помощью инструментов браузера:

  • Производительность загрузки. Lighthouse предоставляет сводку показателей нагрузки. Эдди Османи написала отличный обзор ключевых пользовательских моментов для загрузки страницы. для загрузки и разбора ресурсов и использования памяти. Если вы хотите углубиться, запустите профилирование памяти и JavaScript.
  • Общий вес страницы и количество файлов.
  • Количество и вес файлов JavaScript.
  • Любые особенно большие отдельные файлы JavaScript (скажем, более 100 КБ).
  • Неиспользуемый JavaScript. Вы можете проверить это с помощью инструмента охвата Chrome.
  • Общее количество и вес файлов изображений.
  • Любые особенно большие отдельные файлы изображений.
  • Форматы изображений: существуют ли PNG, которые могли бы быть JPEG или SVG? Используется ли WebP с запасными вариантами?
  • Используются ли методы адаптивного изображения (например, srcset).
  • Размер файла HTML.
  • Общее количество и вес файлов CSS.
  • Неиспользуемый CSS. (В Chrome используйте панель покрытия.)
  • Проверьте наличие проблем с использованием других ресурсов, таких как веб-шрифты (включая шрифты значков).
  • Проверьте временную шкалу DevTools на предмет того, что блокирует загрузку страницы.

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

Часто можно использовать инструменты браузера, чтобы обнаружить проблемы, просто проверив ответы сети и упорядочив их по размеру.

Например: PNG размером 349 КБ здесь может быть проблемой:

Конечно, оказалось, что ширина изображения составляет 1600 пикселей, тогда как максимальная ширина отображения элемента составляет всего 400 пикселей. Для распакованного изображения требовалось более 4 МБ памяти, что много для мобильного телефона.

Пересохранение изображения в формате JPEG шириной 800 пикселей (чтобы справиться с шириной экрана 400 пикселей на экранах с увеличением 2x) и оптимизация с помощью ImageOptim привели к получению файла размером 17 КБ: сравните исходный PNG с оптимизированным JPEG.

Это улучшение на 95 %!

Проверьте загрузку памяти и процессора

Прежде чем вносить изменения, ведите учет использования памяти и ЦП.

В Chrome вы можете получить доступ к диспетчеру задач из меню "Окно". Это простой способ проверить требования веб-страницы.

Диспетчер задач Chrome — следите за нагрузкой на память и ЦП!

Проверка производительности первой и последующих загрузок

Lighthouse, WebPagetest и Pagespeed Insights полезны для анализа скорости, стоимости данных и использования ресурсов. WebPagetest также проверит кэширование статического контента, время до первого байта и эффективность использования CDN на вашем сайте.

Включить кеширование статического контента очень просто, чтобы браузеры могли кэшировать ресурсы при первом запросе, настроив сервер на включение соответствующих заголовков.

Если браузер может кэшировать ресурсы, ему не нужно будет извлекать их из сети при последующих посещениях. Это повышает скорость загрузки, снижает стоимость данных и уменьшает нагрузку на сеть и сервер — даже для браузеров, которые не поддерживают кэширование через сервис-воркер. Даже если вы используете Cache API, важно включить кэширование в браузере.

Чтобы узнать больше, ознакомьтесь с инструментами PageSpeed ​​и ресурсами, посвященными основам работы в Интернете (в частности, раздел "Отмена и обновление кэшированных ответов").

Сохранить результаты

  • WebPagetest: каждый результат теста имеет собственный URL.
  • Pagespeed Insights: онлайн-инструмент Pagespeed Insights теперь включает данные отчета Chrome User Experience, отражающие реальную статистику производительности.
  • Lighthouse: сохраняйте отчеты с панели аудита Chrome DevTools, нажав кнопку загрузки:

Тестирование основных требований Progressive Web App

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

Lighthouse также проверяет, может ли ваш сайт обеспечить приемлемую работу в автономном режиме.

Вы можете скачать отчет Lighthouse в формате JSON или, если вы используете расширение Lighthouse для Chrome, опубликовать отчет как GitHub Gist: нажмите кнопку «Поделиться», выберите «Открыть в средстве просмотра», затем снова нажмите кнопку «Поделиться» в новое окно и Сохранить как Gist.

Экспортируйте отчет в суть из расширения Lighthouse Chrome — нажмите кнопку «Поделиться»

Используйте аналитику, отслеживание событий и бизнес-показатели для отслеживания реальной эффективности

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

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

Если аналитика еще не реализована, сейчас самое время! Бизнес-показатели и аналитика являются окончательным арбитром того, работает ли ваш сайт. При необходимости включите отслеживание событий для действий пользователя, таких как нажатия кнопок и воспроизведение видео. Вы также можете внедрить анализ потока целей: путей, по которым ваши пользователи переходят к «конверсиям».

Вы можете следить за скоростью сайта Google Analytics, чтобы проверить, как показатели производительности коррелируют с бизнес-показателями. Например: «Как быстро загружалась домашняя страница?» по сравнению с вопросом "привел ли вход через главную страницу к продаже?"


Google Analytics использует данные Navigation Timing API.

Возможно, вы захотите записать данные, используя один из API производительности JavaScript или свои собственные показатели, например:

Вы также можете использовать ReportingObserver для проверки предупреждений об устаревании браузера и вмешательстве. Это один из многих API для получения реальных измерений от реальных пользователей в реальном времени.

Реальный опыт: запись экрана и видео

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

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

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

Прямое сравнение до и после может быть отличным способом продемонстрировать улучшения!

Что еще?

Если уместно, получите оценку Web Bloat Score. Это забавный тест, но он также может быть убедительным способом продемонстрировать раздувание кода или показать, что вы внесли улучшения.

Сколько стоит мой сайт? Приведенный ниже пример дает приблизительное представление о финансовых затратах на загрузку вашего сайта в разных регионах.

Доступно множество других автономных и онлайн-инструментов: взгляните на perf.rocks/tools.

Если не указано иное, содержимое этой страницы предоставляется по лицензии Creative Commons Attribution 4.0, а образцы кода — по лицензии Apache 2.0. Подробнее см. в Правилах сайта Google Developers. Java является зарегистрированным товарным знаком Oracle и/или ее дочерних компаний.

Читайте также: