ttfb

Crates.iottfb
lib.rsttfb
version1.12.0
sourcesrc
created_at2021-07-09 14:28:31.656422
updated_at2024-05-02 16:06:20.227102
descriptionLibrary + CLI utility to measure the TTFB (time to first byte) of HTTP(S) requests. This includes data of intermediate steps, such as the relative and absolute timings of DNS lookup, TCP connect, and TLS handshake.
homepagehttps://github.com/phip1611/ttfb
repositoryhttps://github.com/phip1611/ttfb
max_upload_size
id420762
size96,163
Philipp Schuster (phip1611)

documentation

https://docs.rs/ttfb

README

TTFB: CLI + Lib to Measure the TTFB of HTTP/1.1 Requests

Similar to the network tab in Google Chrome or Mozilla Firefox, this crate helps you find the timings for:

  • DNS lookup (if domain is specified, i.e., no IP is given)
  • TCP connection start
  • TLS handshake (if https/TLS is used)
  • Initial GET-Request
  • TTFB (Time To First Byte)

It builds upon the crates trust-dns-resolver for modern and secure DNS resolving of domains and native-tls for handling TLS v1.2/1.3.

Cross Platform

CLI + lib work on Linux, MacOS, and Windows.

Usage Binary/CLI tool

Install with cargo install ttfb --features bin. It takes one argument and passes it to the library. The string you pass here as first argument is the same as for the library function.

Additionally, the CLI takes a -k/--insecure option.
Example: $ ttfb -k https://expired.badssl.com

Usage Library

The library exposes the function ttfb(url: String). The string can be for example:

  • phip1611.de (defaults to http://)
  • http://phip1611.de
  • https://phip1611.de
  • https://phip1611.de?foo=bar
  • https://sub.domain.phip1611.de?foo=bar
  • http://12.34.56.78/foobar
  • https://1.1.1.1
  • 12.34.56.78/foobar (defaults to http://)
  • 12.34.56.78 (defaults to http://)

Example Output

If you installed the CLI and invoke it like $ ttfb https://phip1611.de, the output will look like:

TTFB for https://phip1611.de (by ttfb@v1.1.1)
PROPERTY        REL TIME (ms)   ABS TIME (ms)
DNS Lookup    :         0.755           0.755  (probably cached)
TCP connect   :        35.484          36.239
TLS Handshake :        36.363          72.603
HTTP GET Req  :         0.011          72.614
HTTP Resp TTFB:        76.432         149.046

MSRV

The MSRV of the library is 1.65.0 stable. The MSRV of the binary is 1.74.1 stable.

Commit count: 104

cargo fmt