Coder Social home page Coder Social logo

time-to-first-byte's Introduction

PlatformEngineersToolbox logo
Github Build Status Release Commits since release

Overview

This tool is designed to allow you to measure and display the 'Time To First Byte' (ttfb) for a given url. It can also help identify bottlenecks or latency issues that might be causing slow responses.

Usage

  Usage: ./ttfb.sh [ -hfmv ] [ -c count ] [ -u url ]

    -h    : Print this screen
    -v    : show the current version of the script
    -f    : Show full set of timing values
    -m    : Show minimal setof timing values
    -c    : How many times to test
    -u    : The url to test

NOTE -u is not required if you put the url as the last parameter.

Results Output

Single Connection Test

Standard Output (Default)
───────────────────────────────────────────────────────────────────────────────────────────────────────────
                                          Time to First Byte Test
───────────────────────────────────────────────────────────────────────────────────────────────────────────
  Lookup Time: 0.005087   Connect Time: 0.025123   StartXfer Time (TTFB): 0.111106   Total Time: 0.111173
───────────────────────────────────────────────────────────────────────────────────────────────────────────
Minimal Output (-m)
──────────────────────────────────────────────────────────
                 Time to First Byte Test
──────────────────────────────────────────────────────────
  StartXfer Time (TTFB): 0.106124   Total Time: 0.106208
──────────────────────────────────────────────────────────
Full Output (-f)
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
                                                                               Time to First Byte Test
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
  Lookup Time: 0.004987   Connect Time: 0.022486   AppCon Time: 0.089366   PreXfer Time: 0.089427   Redirect Time: 0.000000   StartXfer Time (TTFB): 0.108404   Total Time: 0.108475
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────

Repeated Connection Test

It is also possible to specify how many connections to make when testing by adding the -c flag. This can be combined with the existing output flags (-m and -f)

───────────────────────────────────────────────────────────────────────────────────────────────────────────
                                          Time to First Byte Test
───────────────────────────────────────────────────────────────────────────────────────────────────────────
  Lookup Time: 0.005112   Connect Time: 0.034810   StartXfer Time (TTFB): 0.119705   Total Time: 0.119777
  Lookup Time: 0.005087   Connect Time: 0.023240   StartXfer Time (TTFB): 0.108551   Total Time: 0.108623
  Lookup Time: 0.004158   Connect Time: 0.021478   StartXfer Time (TTFB): 0.110971   Total Time: 0.111036
  Lookup Time: 0.005108   Connect Time: 0.022807   StartXfer Time (TTFB): 0.111455   Total Time: 0.111526
  Lookup Time: 0.004764   Connect Time: 0.022720   StartXfer Time (TTFB): 0.111475   Total Time: 0.111547
───────────────────────────────────────────────────────────────────────────────────────────────────────────

Exceptional lag test

───────────────────────────────────────────────────────────────────────────────────────────────────────────
                                          Time to First Byte Test
───────────────────────────────────────────────────────────────────────────────────────────────────────────
  Lookup Time: 0.005257   Connect Time: 0.023145   StartXfer Time (TTFB): 0.123785   Total Time: 1.399076
  Lookup Time: 0.004230   Connect Time: 0.021909   StartXfer Time (TTFB): 0.109505   Total Time: 1.218776
  Lookup Time: 0.004481   Connect Time: 0.022189   StartXfer Time (TTFB): 0.111843   Total Time: 1.293919
  Lookup Time: 0.005262   Connect Time: 0.023195   StartXfer Time (TTFB): 0.113860   Total Time: 1.258916
  Lookup Time: 0.005240   Connect Time: 0.023303   StartXfer Time (TTFB): 0.113752   Total Time: 1.227184
───────────────────────────────────────────────────────────────────────────────────────────────────────────

NOTE: We used https://flash.siwalik.in/ which is a website which allows you to intentionally add lag/latency to a connection. We forced the addition of 1000ms just to demonstrate the script functions as expected.

In the above example prefixed the normal url with https://flash.siwalik.in/delay/1000/url/ to create this intentional lag.

Timing Key

Time Description
Lookup time (time_namelookup) The time, in seconds, it took from the start until the name resolving was completed.
Connect time (time_connect) The time, in seconds, it took from the start until the TCP connect to the remote host was completed.
AppCon time (time_appconnect) The time, in seconds, it took from the start until the SSL/SSH/etc connect/handshake to the remote host was completed.
PreXfer time (time_pretransfer) The time, in seconds, it took from the start until the file transfer was just about to begin. This includes all 'pre-transfer' commands and negotiations that are specific to the particular protocol(s) involved.
Redirect time (time_redirect) The time, in seconds, it took for all redirection steps include name lookup, connect, pretransfer and transfer before the final transaction was started. 'time_redirect' shows the complete execution time for multiple redirections.
StartXfer time (time_starttransfer) The time, in seconds, it took from the start until the first byte was just about to be transferred. This includes 'time_pretransfer' and also the time the server needed to calculate the result.
Total time The sum of all the other times

Response Times: The 3 Important Limits

Short note for your information.

  • 0.1 second – is about the limit for having the user feel that the system is reacting instantaneously, meaning that no special feedback is necessary except to display the result;
  • 1.0 second – is about the limit for the user’s flow of thought to stay uninterrupted, even though the user will notice the delay. Normally, no special feedback is necessary during delays of more than 0.1 but less than 1.0 second, but the user does lose the feeling of operating directly on the data;
  • 10 seconds – is about the limit for keeping the user’s attention focused on the dialogue. For longer delays, users will want to perform other tasks while waiting for the computer to finish, so they should be given feedback indicating when the computer expects to be done. Feedback during the delay is especially important if the response time is

time-to-first-byte's People

Contributors

tgwolf avatar

Stargazers

 avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.