Mesure du temps au premier octet pour les URL uniques ou multiples. Peut vous montrer les valeurs TTFB les plus rapides, les plus lentes et les plus médianes et enregistrent éventuellement tous les en-têtes de réponse.

Usage: ttfb [options] url [url...]
-d debug
-l <log file> (infers -d) log response headers. Defaults to ./curl.log
-n <number> of times to test time to first byte
-o <option> pass options to curl (e.g. -o "-k" will make curl ignore invalid certificates)
-v verbose output. Show response breakdown (DNS lookup, TLS handshake etc)
Suit implicitement une chaîne de redirection à l'aide de l'option -L de Curl.
Peut enregistrer tous les en-têtes de réponse (le fichier journal par défaut est ./curl.log ) en appelant avec -d .
Remplacez le fichier journal par défaut en spécifiant -l /some/file .
Obtenez les valeurs TTFB les plus rapides, les plus lents et les plus médianes en spécifiant le nombre de fois pour appeler une URL; Utilisez -n2 pour 2 tests, -n5 pour 5 et ainsi de suite.
Utilise le calcul %{time_starttransfer¹} - %{time_appconnect²} qui n'inclut aucune surcharge de connexion, pour mieux approximer la figure TTFB de Devtool.
¹ time_starttransfer
Le temps, en quelques secondes, il a pris du début jusqu'au premier octet sur le point d'être transféré. Cela inclut Time_pretransfer et également le temps dont le serveur devait calculer le résultat.
² time_appconnect
Le temps, en quelques secondes, il a pris le début jusqu'à ce que le SSL / SSH / ETC connect / handshake à l'hôte distant soit terminé.
Basé sur un Gist par https://github.com/sandeepraju
Modifié par [email protected], @jaygooby
Téléchargez le script à partir de la branche maître et faites-le exécutable:
curl -LJO https://raw.githubusercontent.com/jaygooby/ttfb.sh/master/ttfb
chmod +x ./ttfb
Usage: ttfb [options] url [url...]
-d debug
-l <log file> (infers -d) log response headers. Defaults to ./curl.log
-n <number> of times to test time to first byte
-o <option> pass options to curl (e.g. -o "-k" will make curl ignore invalid certificates)
-v verbose output. Show response breakdown (DNS lookup, TLS handshake etc)
Utilisation de base:
$ ttfb example.com
.227436
Utilisation de base avec ventilation de la réponse verbale:
$ ttfb -v https://example.com
DNS lookup: 0.005152 TLS handshake: 0.000000 TTFB including connection: 0.200831 TTFB: .200831 Total time: 0.201132
Tester plusieurs fois:
$ ttfb -n 5 example.com/example/url
.....
fastest .177263 slowest .214302 median .179957
Tester plusieurs URL:
$ ttfb bbc.co.uk news.bbc.co.uk
bbc.co.uk .049985
news.bbc.co.uk .054122
Testez plusieurs URL, plusieurs fois:
$ ttfb -n 5 bbc.co.uk news.bbc.co.uk
.....
.....
bbc.co.uk fastest .030936 slowest .057755 median .034663
news.bbc.co.uk fastest .031413 slowest .182791 median .035001
Dépression de réponse verbeuse lorsque plusieurs tests spécifiés:
$ ttfb -v -n 5 bbc.co.uk
DNS lookup: 0.005335 TLS handshake: 0.102314 TTFB including connection: 0.148328 TTFB: .046014 Total time: 0.646115
DNS lookup: 0.005322 TLS handshake: 0.102609 TTFB including connection: 0.150693 TTFB: .048084 Total time: 0.644611
DNS lookup: 0.004277 TLS handshake: 0.102066 TTFB including connection: 0.172199 TTFB: .070133 Total time: 1.196256
DNS lookup: 0.004444 TLS handshake: 0.107375 TTFB including connection: 0.160771 TTFB: .053396 Total time: 0.637290
DNS lookup: 0.005352 TLS handshake: 0.118882 TTFB including connection: 0.168772 TTFB: .049890 Total time: 0.653761
fastest .046014 slowest .070133 median .049890
Enregistrez tous les en-têtes de réponse pour plusieurs tests à plusieurs URL:
ttfb -d -n 2 bbc.co.uk https://www.bbc.co.uk/weather
..
..
bbc.co.uk fastest .027550 slowest .055215 median .041382
https://www.bbc.co.uk/weather fastest .101020 slowest .297923 median .199471
$ ls *.log
bbc_co_uk-curl.log https___www_bbc_co_uk_weather-curl.log
$ cat https___www_bbc_co_uk_weather-curl.log
HTTP/2 200
server: openresty
x-cache-action: MISS
vary: Accept-Encoding,X-BBC-Edge-Cache,X-BBC-Edge-Scheme,X-CDN
x-cache-age: 0
cache-control: private, stale-while-revalidate=10, max-age=0, must-revalidate
content-type: text/html;charset=utf-8
x-mrid: w1
date: Thu, 11 Apr 2019 17:08:07 GMT
x-xss-protection: 1; mode=block
x-content-type-options: nosniff
x-lb-nocache: true
x-msig: 24e37f81323984e4e45b8048f9e3c94a
x-frame-options: SAMEORIGIN
content-length: 1077454
HTTP/2 200
server: openresty
x-cache-action: MISS
vary: Accept-Encoding,X-BBC-Edge-Cache,X-BBC-Edge-Scheme,X-CDN
x-cache-age: 0
cache-control: private, stale-while-revalidate=10, max-age=0, must-revalidate
content-type: text/html;charset=utf-8
x-mrid: w1
date: Thu, 11 Apr 2019 17:08:08 GMT
x-xss-protection: 1; mode=block
x-content-type-options: nosniff
x-lb-nocache: true
x-msig: 24e37f81323984e4e45b8048f9e3c94a
x-frame-options: SAMEORIGIN
content-length: 1077454
Voir https://blog.cloudflare.com/a-question-of-timing/ et https://curl.haxx.se/docs/manpage.html pour une explication de la façon dont les variables de boucle se rapportent aux différentes stades du transfert.
Pour obtenir une meilleure approximation du TTFB de Devtool, nous considérons le temps sans la surcharge de connexion: %{time_starttransfer} - %{time_appconnect}
Utilise une eval sale pour faire l'arithmétique TTFB. Dépend des commandes bc et column .
Si vous souhaitez soumettre un PR, veuillez vous assurer que tous les tests existants réussissent et s'il ajoute de nouvelles fonctionnalités, ajoutez un test dans la suite de tests.
Pour exécuter les tests, appelez make de la racine du projet. Vous devrez installer des batts-core et dans votre $PATH .
Si vous voulez seulement exécuter un test ou deux, décommentez les lignes # skip sur les tests qui ne vous soucient pas, alors ils lisent skip , puis ces tests seront ignorés.
Voir CONTRIBUTING.md pour plus de détails.
Afficher les progrès lorsque plusieurs options de demande ( -n 2 etc) sont définies
-o ) Trier la sortie par TTFB le plus rapide lorsque plusieurs URL sont fournies
Code couleur le TTFB: Figure dans la réponse standard, selon la vitesse de la réponse.