Подтвердить что ты не робот

Использование Chrome с переключателем `--headless` для измерения времени загрузки пользовательской страницы

Я пытаюсь улучшить производительность своего веб-сервера и хочу получить точную оценку того, сколько времени потребуется пользователю для загрузки страницы. То, как я представлял себе это, было бы симулировать одновременные запросы пользователей и отслеживать изменение времени загрузки страницы, поскольку я настраиваю различные настройки для получения оптимальных результатов.

Я хочу использовать последний снимок Chromium с помощью переключателя --headless, чтобы определить, сколько времени потребуется пользователю для загрузки страницы, но поскольку это относительно новая функция, и я не знаком с все возможные переключатели, я был бы признателен, если кто-то может поделиться тем, что они будут запускать, чтобы получить точные результаты.

Единственное ограничение, которое у меня есть, это то, что я не могу вводить скрипты или изменять контент ответа каким-то другим способом, который был бы полезен для такого теста.

4b9b3361

Ответ 1

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

time chromium \
  --headless \
  --disk-cache-dir=/dev/null \
  --disable-gpu \
  --download-whole-document \
  --deterministic-fetch \
  https://www.stackoverflow.com

Примечания

  • это не разогревает записи DNS в исходном запросе, поэтому, вероятно, лучше всего отказаться от первого результата.
  • флаг --disable-gpu не нужен, но есть сообщенная ошибка с текущей сборкой
  • открытие удаленного порта для отладки, вероятно, может быть полезно для удаления ссылок на сторонние источники, которые искажают результаты или имеют больший контроль над тем, что считается полностью загруженной страницей, например, подождите, пока некоторые скрипты будут извлекать дополнительные ресурсы, но это немного путь над моей головой

Ответ 2

Я автор Navalia, что является более высокой абстракцией по безголовому Chrome для node/TypeScript. Вы можете легко сделать это с помощью чего-то вроде:

const Navalia = require('navalia')

const navalia = new Navalia({
  numInstances: 1,
  verbose: true,
})

navalia.startup()

navalia.register(async chrome => {
  const start = Date.now()
  await chrome.navigate('http://www.cnn.com/')
  console.log(`Total time to load page ${Date.now() - start}ms`)
})

Если есть больше возможностей, которые вы хотели бы, тогда не стесняйтесь делать билет. Одна из целей - отвлечь боль от переключателей Chrome + протокол CDP.