Раз будем говорить о скорости, пожалуй, следует начать с методик измерения. Так уж у нас заведено – не измерил, значит, не было.
Некогда мы со @st00nsa рассказывали об этом на HolyJS: youtu.be/Whm2FMBIgA0, youtu.be/TzCMDlYMydA
Подробнее – в треде
В классической модели скорости мы смотрели вот на что:
FCP – время первой отрисовки контента
FMP – время отрисовки полезного контента
JS inited – время, когда заработали все JS-элементы
Пока так и продолжаем, но появляются новые вызовы, ответ на которые мы готовим
FCP – время первой отрисовки. Оно должно быть минимальным. Но для всех ли проектов и для любых ли переходов? Пользователям не очень нравится мигание блоков страницы, а оно будет при большой дельте между FCP и FMP. Возможно, пора смотреть и на эту дельту.
FMP – время отрисовки значимого контента. Очень показательная метрика, для которой нет стандартного способа измерения. Нужно комбинировать разные API, чтобы получить эти данные: requestAnimationFrame, IntersectionObserver, Element Timing, Resource Timing. Самая сложная метрика
JS inited в первой своей версии был прост – время, когда фреймворк закончил развешивать обработчики после DOMContentLoaded. Но что если фреймворк не ждёт DCL, а инициализируется по мере появления элементов во вьюпорте? Какое время считать? Об этом задумались при переходе на React