Учитывается ли время ответа сервера в отчете First Contentful Paint через Google Lighthouse?

Я пытаюсь понять, содержит ли FCP, предоставленный Google Lighthouse, время, которое сервер должен был использовать для ответа.

Насколько я могу видеть значения, предоставляемые API производительности браузера и Google Lighthouse разные.

Например, я построил простой демонстрационный сервер с параметром запроса для управления скоростью ответа:

const path = require('path');
const express = require('express');

const port = 6789;
const app = express();

app.get('/index', (req, res) => {
  setTimeout(() => {
    res.sendFile(path.resolve(__dirname, './index.html'));
  }, Number(req.query.delay || 0));
});

app.listen(port);
console.log('server started on port %s', port);

Я делаю запрос к этому серверу с задержкой 10 секунд, например http://localhost:6789/index/?delay=10000, и после его загрузки запускаю скрипт, чтобы получить значение FCP в консоли:

window.performance.getEntriesByName('first-contentful-paint')[0].startTime;
// 10113.205000001471

Однако, когда я запускаю Google Lighthouse с той же задержкой в ​​10 секунд http://localhost:6789/index/?delay=10000, я вижу, что FCP составляет всего 0,8 секунды, что меньше секунды, например

введите здесь описание изображения

Я предполагаю, что Google Lighthouse не включает время загрузки сервера, но в какой момент он начинает измерять метрику? Вот цитата из официального веб-документа -

FCP измеряет, сколько времени требуется браузеру для отображения первой части содержимого DOM после того, как пользователь перейдет на вашу страницу. (источник - https://web.dev/first-contentful-paint/?utm_source=lighthouse&utm_medium=devtools)

У кого-нибудь есть идеи? Спасибо!


person Kosmetika    schedule 08.01.2020    source источник


Ответы (1)


Может быть ошибка Lighthouse. Было замечено несколько инцидентов, когда люди жаловались на неточность местного результата работы маяка:

Предположим, это не ошибка. Обычно время ответа сервера напрямую влияет на First Contentful Paint. Но в настоящее время (статические) ресурсы кэшируются браузером, или, если вы используете прогрессивное веб-приложение, браузер несколько изящно справляется с медленными бэкэндами.

Lighthouse определяет FCP как:

Первая отрисовка содержимого: первая отрисовка содержимого - это первая отрисовка браузером любого содержимого (текста, изображения, холста и т. Д.) На экране.

Lighthouse должен предоставлять снимки экрана / диафильм, которые должны соответствовать FCP. то есть посмотрите, видите ли вы активность на экране незадолго до отметки 1 с, даже если вы замедляете время ответа сервера. Если так,

а) Очистите кеш, перезагрузите страницу и посмотрите, что вы видите на сетевой панели инструментов разработчика Google.

б) Очистите данные приложения (Инструменты разработчика Google -> Приложение -> Очистить хранилище -> очистить данные сайта. Затем попробуйте запустить

Надеюсь это поможет.

person Parth Mehta    schedule 10.01.2020