Page speed is not a vanity metric. It affects how usable your site feels, how quickly visitors can act, and how confidently people move through checkout or enquiry forms. For most small business websites, the causes of slowness are fixable without rebuilding the whole site. This post walks through how to diagnose what is actually wrong and what to do about it.
Measure Before You Touch Anything
Making changes without a baseline is guesswork. Before you do anything else, run your site through two tools:
- Google PageSpeed Insights: pulls real-world performance data from the Chrome User Experience Report alongside lab measurements. The "Opportunities" section gives specific, prioritised recommendations.
- GTmetrix: the waterfall view shows every resource your page loads, in the order it loads, with timing for each. Invaluable for identifying which specific request is holding everything up.
Test your homepage and a typical inner page; they often have different bottlenecks. Record your scores. You can't tell if anything is improving without a reference point.
Images: The Most Common Culprit
Unoptimised images are one of the most common performance problems we see. A full-resolution photograph uploaded straight from a camera and displayed in a small card can make visitors download far more data than the browser will ever use.
Address it on three fronts:
- Resize before uploading. If an image will be displayed at 800px wide, do not upload a 4,000px version unless there is a real need for it. Export a sensible size for the layout and screen density you expect.
- Use modern formats. WebP and AVIF can reduce file sizes significantly compared with older JPEG and PNG workflows. If you're on WordPress, image optimisation plugins such as ShortPixel can convert and compress your media library.
- Lazy-load below-the-fold images. Add
loading="lazy"to any<img>tag that isn't in the initial viewport. Modern browsers handle this natively (no JavaScript required) and it can have a dramatic effect on initial page load time.
Plugin Bloat (WordPress)
Many WordPress plugins add code, database queries, assets, or background tasks. Some are well built and lightweight; others run work on pages where they are not visibly needed. A contact form plugin may load site-wide assets even if the form appears on one page, and some SEO or analytics plugins add work to every request.
Audit ruthlessly. Deactivate anything you installed for a one-off task and never removed. Deactivate anything that duplicates the functionality of something else. Delete anything deactivated; inactive plugins still represent a security surface.
Install Query Monitor to see exactly which plugins are generating the most database queries on each page load. The results are often surprising.
Caching
Without caching, every page request triggers PHP execution and one or more database queries to build the page from scratch. For a page that doesn't change between visits, this is unnecessary work. Caching stores the finished HTML output and serves it directly on subsequent requests, bypassing PHP and the database entirely.
For WordPress, WP Rocket is a popular paid option. If you want a free alternative, W3 Total Cache is capable but needs more careful configuration. At a minimum, enable page caching and browser caching.
For high-traffic sites or sites with dynamic data, Redis object caching is worth considering where it is available. It caches the results of expensive database queries so repeat requests can be served from memory. In Enhance, check whether Redis is enabled for your website, then connect WordPress with the Redis Object Cache plugin.
PHP Version
PHP performance and security support have improved across modern PHP 8 releases. Moving an old WordPress site from PHP 7.4 to PHP 8.2 or 8.3 can improve response times, but the exact gain depends on the theme, plugins, and workload.
In Enhance, go to Advanced → Developer tools → PHP and check your current version. If you're on 7.4 or earlier, upgrade to 8.2 or 8.3. Do it on a staging environment first to catch any compatibility issues with your plugins; most are fine, but it's worth verifying before applying to production.
Third-Party Scripts
Analytics, live chat widgets, cookie consent banners, social sharing buttons, retargeting pixels: each adds an external HTTP request that your server has no control over. If Google Tag Manager, Intercom, or any ad network has a slow response day, your page waits for it. And they can't be cached or optimised on your end.
Audit what's loading. Open your browser's network tab and filter by domain; you may find scripts from services you stopped using months ago. Load non-essential scripts asynchronously with the async or defer attribute so they don't block rendering. Remove anything you can't justify.
When the Problem Is the Server
If you've addressed images, caching, plugins, and PHP version and the site is still sluggish, look at Time to First Byte (TTFB), the time from request to receiving the first byte of a response. Temporarily disable your caching plugin and measure TTFB with GTmetrix or your browser's network tab.
If uncached TTFB is consistently high after you have addressed images, plugins, caching, and PHP version, the site may be hitting server resource limits or waiting on slow external services. At that point, it is worth reviewing the hosting plan, PHP workers, database load, and whether a VPS would genuinely help. If you're not sure which makes sense for your workload, open a ticket and we'll take a look.