Using Chrome with `--headless` switch to measure user page load times Using Chrome with `--headless` switch to measure user page load times google-chrome google-chrome

Using Chrome with `--headless` switch to measure user page load times


This seems to be ok-ish. Taking a screenshot shows the page seems to be loaded and getting similar results between the first and subsequent requests, so I'm assuming caching is indeed disabled.

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

Notes

  • this doesn't warm up the DNS entries on the initial request, so it'd probably be best to discard the first result
  • the --disable-gpu flag isn't necessary, but there is a reported error with the current build
  • opening up a remote debugging port could probably be useful to remove references to 3rd party sources that skew results or to have more control over what's considered a fully loaded page, say wait for some scripts to fetch additional resources, but it's a bit way over my head


I'm the author of Navalia, which is a higher abstraction over headless Chrome for node/TypeScript. You could easily do this with something like:

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`)})

If there are more features you would like, then feel free to make a ticket. One of the goals is abstracting away the pain of the Chrome switches + the CDP protocol.