node ttfb.js https://www.google.com/ 20Will create 20 curl test for https://www.google.com/
node ttfb.js https://www.google.com/ 20Will create 20 curl test for https://www.google.com/
| const { | |
| exec | |
| } = require('child_process'); | |
| const { | |
| promisify | |
| } = require('util'); | |
| const execPromise = promisify(exec); | |
| process.argv.splice(0, 2); | |
| const [url, numOfmeasurement = 30, verbose = true] = process.argv; | |
| let measurement = []; | |
| let i = 0; | |
| const getResult = () => { | |
| const avg = measurement.reduce( (initial, mesurement) => initial+mesurement,0) / measurement.length | |
| console.log(`\n\n${url} \n${i} measurements with an average TTFB of ${avg} seconds \n`); | |
| }; | |
| process.on('SIGINT', getResult); | |
| (async () => { | |
| for (i ; i < parseInt(numOfmeasurement); i++) { | |
| const responsefromCurl = await execPromise(`curl -s -L -o /dev/null -w %{time_starttransfer} ${url}`); | |
| //await new Promise( (resolve, reject) => setTimeout( () => resolve(), 3000 )); | |
| measurement.push(parseFloat(responsefromCurl.stdout)) | |
| if(verbose) console.log(responsefromCurl.stdout); | |
| } | |
| getResult(); | |
| })() | |
| .catch(e => 'Error ' + e); |