使用带有`--headless`开关的Chrome来测量用户页面加载时间

时间:2016-12-27 02:21:22

标签: performance google-chrome chromium headless-browser

我正在努力改善我的网络服务器的性能,并希望准确衡量用户加载页面所需的时间。我想象的方式是模拟来自用户的并发请求,并跟踪页面加载时间的变化,因为我微调各种设置以获得最佳结果。

我想使用Chromium的最新快照和--headless开关来衡量用户加载页面所需的时间,但由于这是一个相对较新的功能而且我不熟悉all the possible switches,如果有人可以分享他们为了获得准确结果而分享的内容,我会很感激。

我唯一的限制是我不能以其他方式注入脚本或修改响应内容,这对于这样的测试是有帮助的。

2 个答案:

答案 0 :(得分:5)

这似乎没问题。截图显示页面似乎已加载并在第一个和后续请求之间得到类似的结果,因此我假设缓存确实已禁用。

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

备注

  • 这不会预热初始请求中的DNS条目,因此最好放弃第一个结果
  • --disable-gpu标志不是必需的,但a reported error包含当前版本
  • 打开一个远程调试端口可能对删除对结果产生偏差的第三方来源的引用或者对被认为是完全加载的页面有更多控制感兴趣,比如等待一些脚本来获取额外的资源,但它有点我头上的方式

答案 1 :(得分:2)

我是Navalia的作者,这是针对节点/ TypeScript的无头Chrome的更高抽象。您可以通过以下方式轻松完成此操作:

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协议的痛苦。