Abuja Digital Studio · Est. 2018
Start a Project↗
All posts
Performance14 Apr 20265 min read890 words

WordPress Speed Optimisation: From 8 Seconds to Under 1

A step-by-step technical guide to making a slow WordPress site fast. Covers hosting, caching, image optimisation, database cleanup, and everything in between — with real benchmark results.

KA
Kenneth Alimba
Founder · Orravo Studio
WordPress Speed Optimisation: From 8 Seconds to Under 1

WordPress is powerful. Out of the box, with a popular page builder and a dozen plugins, it is also often catastrophically slow.

This guide documents the exact process we use to take a slow WordPress installation and make it genuinely fast — including real before/after data.


The Starting Point

Developer coding on laptop in dark environment

Before any optimisation work, always establish a baseline. Test on PageSpeed Insights and GTmetrix. Screenshot everything. You cannot measure improvement without a starting point.

Typical slow WordPress site profile:


Common Performance Anti-Patterns Found in Audits
────────────────────────────────────────────────────────
Issue                               Frequency
────────────────────────────────────────────────────────
No caching plugin                   41% of sites
Images not compressed/WebP          78% of sites
Render-blocking scripts             92% of sites
Shared hosting (< 512MB RAM)        55% of sites
Unused plugins (5+)                 67% of sites
No CDN                              71% of sites
Database never cleaned              84% of sites
No lazy loading                     63% of sites
────────────────────────────────────────────────────────
Source: Orravo internal audit data, 2025–2026 (n=134)

Step 1: Fix the Foundation — Hosting

No amount of caching can save a website on undersized shared hosting. If your server takes 1.5 seconds just to respond (TTFB > 1500ms), you cannot get a fast site.

TTFB benchmarks:


Host tier            Typical TTFB
────────────────────────────────────────────────────────
Shared (GoDaddy etc) 800ms – 2,500ms    ❌ Problematic
Managed WP hosting   150ms – 400ms      ✅ Acceptable
(Kinsta, WP Engine)
VPS (DigitalOcean)   80ms – 250ms       ✅ Good
with Redis + Nginx
────────────────────────────────────────────────────────

If your TTFB is consistently above 600ms, fix hosting before touching anything else.


Step 2: Install a Caching Plugin

WordPress generates pages dynamically on every request. Caching stores the generated HTML and serves it directly, bypassing PHP and the database entirely.

Recommended setup:

  • WP Rocket (£40/yr) — best overall, minimal configuration
  • LiteSpeed Cache (free) — excellent if your host runs LiteSpeed
  • W3 Total Cache (free) — powerful but complex to configure correctly

WP Rocket configuration checklist:


WP Rocket Settings Checklist
────────────────────────────────────────────────────────
☑ Enable Page Caching
☑ Enable Cache for mobile devices
☑ Minify HTML
☑ Combine + Minify CSS
☑ Defer JavaScript execution
☑ Remove Unused CSS (use carefully — test thoroughly)
☑ Enable LazyLoad for images
☑ Preload sitemap
☑ Database cleanup (schedule weekly)
────────────────────────────────────────────────────────

Step 3: Image Optimisation

Images are almost always the largest contributor to page weight on WordPress sites. A typical unoptimised product page can carry 3–8MB of images.

Target: All images under 200KB. Hero images under 150KB. Thumbnails under 30KB.

Tools:


# Bulk convert all uploads to WebP with Imagify CLI:
imagify --webp --quality=82 /wp-content/uploads/

# Or use the free Imagify WordPress plugin:
# Media > Imagify > Bulk Optimise

Always use loading="lazy" on below-the-fold images. Never on the LCP image.

Image optimisation typically reduces page weight by 50–70%.


Step 4: Eliminate Render-Blocking Resources

Render-blocking scripts prevent the browser from displaying anything until they have been downloaded and executed.

Identify them: Run Lighthouse → look for Eliminate render-blocking resources.

Common culprits:


Render-blocking scripts commonly found on WordPress sites:
──────────────────────────────────────────────────────────
- jQuery (loaded in <head> — defer it)
- Font Awesome loaded via CDN in <head>
- Google Fonts (load inline or preconnect)
- Slider/carousel plugin scripts
- Tag Manager loading 10+ scripts synchronously
──────────────────────────────────────────────────────────

WP Rocket's Delay JavaScript Execution handles most of this automatically. For manual control:


<!-- Add defer attribute to non-critical scripts: -->
<script src="/wp-content/plugins/slider/slider.min.js" defer></script>

<!-- Preconnect to Google Fonts to reduce DNS time: -->
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>

Step 5: Add a CDN

A CDN (Content Delivery Network) serves your static assets (images, CSS, JS) from a server geographically close to the visitor.

Best options for WordPress:

  • Cloudflare (free tier excellent) — acts as a reverse proxy, caches everything
  • BunnyCDN — £0.01/GB, fast, simple to configure with WP Rocket
  • Kinsta CDN — included with Kinsta hosting

For UK businesses, Cloudflare's free tier with the APO (Automatic Platform Optimisation) add-on (£4.20/month) is the best value by a large margin.


Step 6: Database Cleanup

WordPress stores post revisions, transients, spam comments, and orphaned metadata indefinitely. A neglected database can grow to hundreds of thousands of rows, slowing every query.


-- Check database size breakdown:
SELECT table_name,
  ROUND(data_length/1024/1024, 2) AS 'Data (MB)',
  ROUND(index_length/1024/1024, 2) AS 'Index (MB)'
FROM information_schema.tables
WHERE table_schema = 'your_wp_database'
ORDER BY data_length DESC;

Use WP-Optimize (free) or WP Rocket's built-in Database cleanup. Schedule it to run weekly.


Real Result: Full Optimisation Run


Benchmark: E-commerce WordPress site, 240 products
────────────────────────────────────────────────────────
Metric              Before    After     Change
────────────────────────────────────────────────────────
Total page weight   8.4 MB    1.1 MB    ▼ 87%
HTTP requests       184       41        ▼ 78%
TTFB                1,840ms   210ms     ▼ 89%
Fully loaded (GTm)  8.1s      0.9s      ▼ 89%
PageSpeed Mobile    22        94        +330%
PageSpeed Desktop   47        98        +109%
────────────────────────────────────────────────────────
Time spent: 6 hours
Tools: WP Rocket, Imagify, Cloudflare APO, Redis Object Cache
────────────────────────────────────────────────────────

This is achievable on virtually any WordPress site. The process is repeatable.


Quick Wins Summary

If you only do five things, do these:

  1. Install WP Rocket (or LiteSpeed Cache if on LiteSpeed)
  2. Run Imagify on your entire media library
  3. Enable Cloudflare (free) with APO
  4. Add defer to non-critical scripts
  5. Add loading="lazy" to all below-fold images

Those five changes typically halve load time on an unoptimised WordPress site within an afternoon.

#performance#orravo#web
✦ Ready to invest properly?

Have a project in mind?

Let's talk about how we can help you build something that pays for itself.

Get in touch→

More from the studio

All posts
Design

Why Most WordPress Sites Become Slow After 1 Year

13 May 20265 min→
General

The Hidden Costs of a Cheap Website (What No One Tells You)

22 Apr 20265 min→
WordPress

Headless WordPress: Is It Worth It for Your Business?

20 Apr 20264 min→