CreateIT
CreateIT
BLOG

WordPress – measure load time TTFB

WordPress
TAGS: WordPress

WordPress – measure load time TTFB

SHARE

CHALLENGE:
My WP pages suffer from long load times
SOLUTION:
Add a PHP function to measure Time to first byte

Having a fast website is really important. WordPress sites with good performance will be positioned higher in Search Results Rankings, and visitors will also be happier. TTFB (Time to first byte) is an important performance measurement. It’s wasted time – the time between the initial request and server response. After typing a website url or clicking a link – the server needs to do a lot of things to prepare the response data (fetch content, process PHP functions, query data from database). The first byte received by the browser will be our TTFB Time.

Measure TTFB

There are multiple online tools for checking Time to first byte for your website, e.g.: GTmetrix. You can also use the Chrome ‘Dev Tool’ (Network tab – click the first request on the list, go to the ‘Timing’ tab – Waiting (TTFB) is the value we’re looking for ). The disadvantages of using these tools are:

  • they measure TTFB only for a particular url, for one moment in time
  • they do not show the entire time history of all users visiting your website
  • they connect from one external server, measuring only one network latency

Slow WordPress TTFB

My WordPress website started to load slowly. What is the reason? In most cases – some additional WP plugin has been activated. Some plugins use inefficient database queries or define slow PHP functions. These will increase TTFB significantly. It’s good practice to use only well established/popular plugins and minimize the number of activated ones.

Measure WP load time

We’re going to add a PHP function to measure and save every page load time to a text file. On every request WordPress will save the load time to: /wp-content/uploads/ct-load-time86234.txt

// Grab the page load time upon WordPress shutdown.
function ct_page_load_time() {
    $ignoreThisRequest = false;
    if (strpos($_SERVER['REQUEST_URI'] , 'robots.txt') !== false) {
        $ignoreThisRequest = true;
    }
    if (! is_404() && !$ignoreThisRequest ) {
        // echo '<p>Page load time: '.timer_stop(0, 5).' seconds.</p>';
        $page_load_time = timer_stop(0, 5) . ' seconds';
        // put data to file:
        $time = date("Y-m-d H:i:s", time());
        $ban = "#$time" . " @@ " . $_SERVER['REQUEST_URI'] . " || " . $page_load_time . "\r\n";
        $upload_dir = wp_upload_dir();
        $file = trailingslashit($upload_dir['basedir']) . 'ct-load-time86234.txt';
        $open = fopen($file, "a");
        $write = fputs($open, $ban);
        fclose($open);
    }
}
add_action( 'shutdown', 'ct_page_load_time' );

Analyze TTFB

Now we can analyze the list and look for slow subpages/shortcodes that slow down the website. If a particular subpage has significantly higher TTFB Time – there might be inefficient shortcode added, one that uses a lot of server resources. Poorly written plugins often include slow PHP functions and slow database queries.

Find slow DB queries

We already have a list of subpages with long waiting time. To determine if the reason of bad performance is slow DB queries, we can use the <a href=”https://wordpress.org/plugins/query-monitor/”> Query Monitor plugin. It’s a tool for debugging db queries. It displays all necessary information in the admin toolbar. Slow queries will be highlighted using red color.

That’s it. Make sure you follow us for other useful tips and guidelines.

Need help?

  • Looking for support from experienced programmers?

  • Need to fix a bug in the code?

  • Want to customize your webste/application?

ADD COMMENT

Your email address will not be published. Required fields are marked *

createIT Contact