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

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

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

Цель Почему? На что следует провериться?
Обеспечьте конфиденциальность, безопасность и целостность данных, а также используйте мощные API Почему HTTPS имеет значение HTTPS реализован для всех страниц сайта/маршрутов и активов.
Улучшение производительности нагрузки 53% пользователей покидают сайты , загрузка которых занимает больше трех секунд JavaScript и CSS, которые могут быть загружены асинхронно или отложены. Установите цели по времени интерактивности и размеру полезной нагрузки: например, TTI на 3G. Установите бюджет производительности .
Уменьшить вес страницы • Снижение стоимости данных для пользователей с ограниченными тарифными планами • Снижение требований к хранилищу веб-приложений — особенно важно для пользователей устройств с низкими техническими характеристиками • Снижение затрат на хостинг и обслуживание • Повышение производительности, надежности и отказоустойчивости обслуживания Установите бюджет веса страницы: например, первая загрузка менее 400 кБ. Проверьте наличие тяжелого JavaScript. Проверьте размеры файлов, чтобы найти раздутые изображения, медиа, HTML, CSS и JavaScript. Найдите изображения, которые могут быть загружены отложенно, и проверьте наличие неиспользуемого кода с помощью инструментов покрытия .
Уменьшить запросы ресурсов • Уменьшение проблем с задержками • Уменьшение затрат на обслуживание • Повышение производительности обслуживания, надежности и устойчивости Ищите чрезмерные или ненужные запросы для любого типа ресурсов. Например: файлы, которые загружаются повторно, JavaScript, который загружается в нескольких версиях, CSS, который никогда не используется, изображения, которые никогда не просматриваются (или могут быть загружены лениво).
Оптимизируйте использование памяти Память может стать новым узким местом , особенно на мобильных устройствах. Используйте диспетчер задач Chrome, чтобы сравнить использование памяти вашего сайта с другими сайтами при загрузке домашней страницы и использовании других функций сайта.
Уменьшить нагрузку на ЦП Мобильные устройства имеют ограниченную производительность ЦП, особенно устройства с низкими характеристиками. Проверьте наличие тяжелого JavaScript. Найдите неиспользуемый JavaScript и CSS с помощью инструментов покрытия . Проверьте наличие чрезмерного размера DOM и скриптов, которые без необходимости запускаются при первой загрузке. Найдите JavaScript, загруженный в нескольких версиях, или библиотеки, которых можно было бы избежать с помощью незначительного рефакторинга.

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

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

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

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

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

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

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

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

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

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

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

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

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

Диспетчер задач Chrome, показывающий использование памяти и ЦП для четырех открытых вкладок браузера
Диспетчер задач Chrome — остерегайтесь пожирателей памяти и процессора!

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

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

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

Тест на соответствие основным требованиям Progressive Web App

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

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

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

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

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

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

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

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

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

Скриншот, показывающий скорость сайта Google Analytics

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

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

    const subscribeBtn = document.querySelector('#subscribe');

    subscribeBtn.addEventListener('click', (event) => {
     // Event listener logic goes here...

     const lag = performance.now() - event.timeStamp;
     if (lag > 100) {
      ga('send', 'event', {
       eventCategory: 'Performance Metric'
       eventAction: 'input-latency',
       eventLabel: '#subscribe:click',
       eventValue: Math.round(lag),
       nonInteraction: true,
      });
     }
    });

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

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

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

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

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

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

Что еще?

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

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

Скриншот с whatdoesmysitecost.com

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