Используя (верхние) домохозяйства (Император), чтобы сказать, почему эта страница такая медленная, кого-то это все еще волнует? !
Проще говоря, есть три причины:
Сосредоточение внимания на производительности — это природа + обязанность инженеров;
Производительность страницы имеет решающее значение для взаимодействия с пользователем. Неубедительно полагаться только на тестовые данные оборудования разработки инженера для улучшения производительности страницы каждый раз при рефакторинге, а для проверки требуется большой объем реальных данных;
При зависании ресурса или нештатной загрузке нельзя всегда полагаться на жалобы пользователей, чтобы узнать об этом позже, и нужно проявлять инициативу, чтобы сообщить в полицию.
Реконструкция производительности, при условии гигабитной скорости сети и оборудования стоимостью 10 000 юаней, улучшение времени загрузки страницы может составлять всего 0,1%, но такие данные (земля) данные (хао) не являются репрезентативными. Сетевые среды и аппаратные устройства сильно различаются.Для недорогих устройств субъективный опыт повышения производительности более очевиден, а соответствующие изменения данных более репрезентативны.
Многие проекты загружают ресурсы в CDN. Когда возникает проблема с какими-то узлами CDN, то вообще невозможно точно сообщить «Такой-то, ваш ресурс xx не работает», поэтому нам нужно активно следить за этим.
По данным Google, когда страница загружается более 10 секунд, пользователи впадают в отчаяние, обычно покидают текущую страницу и, скорее всего, никогда не возвращаются.
что контролировать
Что касается показателей производительности внешнего интерфейса, W3C определяет мощныйPerformanceAPI, который, в свою очередь, включаетHigh Resolution Time,Frame Timing,Navigation Timing,Performance Timeline,Resource Timing,User Timingи многие другие специальные стандарты.
В этой статье в основном рассматриваютсяNavigation Timingа такжеResource Timing. По состоянию на середину 2018 года все основные браузеры завершили базовую реализацию.
PerformanceAPI имеет множество функций, одна из которых — запись производительности (сведения о времени) самой страницы и каждого ресурса на странице. И все, что нам нужно сделать, это запросить и использовать.
Читатели могут печатать прямо в консоли браузера.performance, см. соответствующие API.
Далее мы будем использоватьwindow.performanceобъект (Performanceконкретная реализация API) для реализации простого внешнего инструмента мониторинга производительности.
Интерфейсный инструмент для мониторинга производительности за 5 минут
Поскольку это серия «5 минут, чтобы достичь ххх», то должен быть компромисс. Поэтому в данной статье выбраны только два наиболее важных показателя для мониторинга:
время загрузки страницы
время запроса ресурса
Глядя на время, прошло 4 минуты Редактор сказал, что настроение у него стабильное, колебаний нет.
загрузка страницы
Показатели производительности для загрузки страницы можно найти по адресуNavigation Timingнайти в.Navigation TimingОн включает в себя сведения о времени каждой ссылки с момента запроса страницы до ее загрузки.
можно получить поNavigation TimingКонкретное содержание:
getEntriesByTypeэто способ для нас получить данные о производительности.performanceтакже обеспечиваетgetEntriesа такжеgetEntriesByNameВ прочем, из-за "нехватки времени" конкретные отличия здесь повторяться не будут, можно перейти к этому:Woohoo. Я 3.org/TR/perform A….
Результатом является массив, структура элементов которого показана ниже:
Нетрудно заметить, что деталей полно. Таким образом, содержимое, которое можно рассчитать, очень разнообразно, например, время запроса DNS, время рукопожатия TLS и т. д. Можно сказать, что есть только невообразимое, нет невозможного~
Поскольку нас интересует загрузка страницы, естественно прочитатьdomComplete:
На данный момент у нас есть точное время загрузки страницы.
загрузка ресурсов
Так как на странице есть соответствующийNavigation Timing, есть ли соответствующий статический ресурс?TimingШерстяная ткань?
Ответ - да, его зовутResource Timing. Он содержит сведения о времени каждой ссылки каждого ресурса на странице с момента отправки запроса до завершения загрузки иNavigation Timingочень похожий.
Ключевое слово для получения времени загрузки ресурса'resource', конкретный метод заключается в следующем:
performance.getEntriesByType('resource')
Нетрудно представить, что возвращаемый результат обычно представляет собой очень длинный массив, поскольку он содержит информацию о загрузке всех ресурсов на странице.
Мониторинг производительности является лишь вспомогательной функцией и не должен блокировать загрузку страницы, поэтому сбор данных и отчетность мы выполняем только после загрузки страницы (на самом деле необходимую информацию нельзя получить до загрузки страницы):
Я снова посмотрел на время, 5 минут или что-то в этом роде, плевать на эти детали или
Дополнительные инструкции
перечислить
Если вы хотите преследовать (взорвать) и искать (мао) крайность (искать) и вызывать (дефект), инструмент мониторинга не должен занимать время парсинга JavaScript основного потока при загрузке страницы. Поэтому лучше запускать на страницеonloadПосле события используйте метод асинхронной загрузки:
Когда инструмент сообщает данные, он не учитывает междоменные проблемы и неGETиPOSTодновременное существование.
Какой велосипед за 5 минут!
При необходимости вы можете покрыть его самостоятельноpMonitor.logPackageметод, который создается динамически<form/>и<iframe/>, или используйте более распространенный метод расстановки точек~
Как насчет вызова полиции? Просто сообщить или нет? !
Это по-прежнему требует сотрудничества с сервером [серьезное лицо.jpg].
Либо каждому проекту соответствует отдельный URL-адрес для отчетов, либо это может быть унифицированный набор URL-адресов, и проекту присваивается уникальный идентификатор в качестве отличия.
Когда количество тайм-аутов превысит согласованный порог в течение указанного времени, разработчик будет уведомлен об этом по электронной почте/SMS.
мелкозернистый
Теперь для тайм-аута создается только простая статистика, но никаких конкретных причин тайм-аута (DNS? TCP? запрос? ответ?) не сообщается.
Следующий шаг
В этой статье представлен мониторинг производительности загрузки страницы, кроме того, парсинг+выполнение кода JavaScript также является важным фактором, ограничивающим скорость рендеринга первого экрана страницы (особенно для одностраничных приложений). В следующей главе редактор приведет вас к дальнейшему изучениюPerformance Timeline Level 2, чтобы улучшить мониторинг производительности среды выполнения JavaScript, так что следите за обновлениями~
«Qiwu Weekly» — это сообщество передовых технологий, управляемое профессиональной командой «Qiwu Troupe» компании 360. Подписавшись на официальный аккаунт, вы можете отправить нам статью, отправив ссылку прямо на фон.