Существует множество факторов, влияющих на загрузку: сеть, thermal throttling, особенности работы кэша, сторонние скрипты, задержка выполнения парсинга операции ввода-вывода, задержка IPC, установленные расширения, антивирусное программное обеспечение и брандмауэры, фоновые задачи ЦП, аппаратные ограничения и ограничения памяти, размеры L2/L3 кэшей, RTTS. При этом большая часть
нагрузки обусловлена JavaScript, а также шрифтами, блокирующими рендеринг по умолчанию, и изображениями, часто потребляющими слишком много памяти. Все эти проблемы просачиваются
от сервера на клиентскую сторону. Разумеется, вы не можете влиять на эти параметры, но их определенно стоит учитывать
Рекомендуемые 170 КБ уже содержат в себе критический путь HTML/CSS/JavaScript, роутер, стейт менеджеры, различные утилиты, фреймворки и логику приложения. Поэтому следует
тщательно следить за объемом передаваемых по сети данных, временем парсинга/компиляции и временем выполнения (runtime) для сторонних библиотек и фреймворков, которые вы используете. К счастью, за последние несколько лет браузеры научились гораздо
лучше парсить и компилировать скрипты. Вместе с этим, выполнение JavaScript по-прежнему остается основным узким местом.
Тим Кадлец (Tim Kadlec)
провел замечательное исследование производительности современных фреймворков.
Мы, как правило, рассматриваем влияние на производительность одного конкретного фреймворка. Как отмечает Тим, на практике часто используется сразу несколько. Например, это может быть старая версия jQuery, неспешно мигрирующая в современный фреймворк, плюс несколько легаси-приложений на старой версии Angular. В этих случаях разумно подсчитать суммарный размер JavaScript и измерить суммарное время выполнения. А также понять насколько сильно эти суммарные значения влияют на скорость выполнения нашего приложения для слабых устройств.
В целом, современные фреймворки плохо заточены под дешёвые малопроизводительные устройства, поэтому скорость работы интерфейса для телефона и десктопа чаще всего существенно отличаются. По словам Тима:«Если вы используете фреймворк для создания сайта, это всегда компромиссное решение с точки зрения производительности. Даже в лучших сценариях».