Skip to main content

Allow analytics cookies to help us improve this website?

Performance
Oct 31, 2025
14 min read

Website Speed Optimisation: 12 Proven Fixes

Speed is money. Every extra second hurts conversions, especially on Nigeria's 3G/affordable data connections. Fix these 12 items to win more sales.

Website performance speed improvements

In Nigeria, where 70% of web traffic comes from mobile devices on 3G/4G connections, every second of load time matters. Research shows:

53%

of mobile users abandon sites that take >3 seconds to load

-7%

conversion drop for every 1-second delay in page load

+32%

increase in conversions when load time drops from 5s to 2s

Below, we'll walk through 12 proven fixes with implementation details, before/after metrics, and a real Nigerian e-commerce case study.

Understanding Core Web Vitals

Google uses these 3 metrics to rank websites. Poor scores = lower search rankings + fewer conversions.

LCP (Largest Contentful Paint)

How fast the main content loads

Target: <2.5s | Poor: >4s

INP (Interaction to Next Paint)

How fast clicks/taps respond

Target: <200ms | Poor: >500ms

CLS (Cumulative Layout Shift)

Visual stability (no jumping content)

Target: <0.1 | Poor: >0.25

The 12 Speed Fixes (Ranked by Impact)

1. Compress and Resize Images

Impact: -40% page weight, -2.1s LCP on average

Images account for 60-80% of page weight on Nigerian e-commerce sites. Most use unoptimized JPEGs at 2-5MB each.

Implementation:

  • Use AVIF/WebP: 30-50% smaller than JPEG with same quality (use image/avif, image/webp with JPEG fallback)
  • Serve responsive sizes: <img srcset="hero-400.avif 400w, hero-800.avif 800w" />
  • Lazy-load below fold: loading="lazy" on images not in viewport
  • Tools: Squoosh.app, Cloudinary, ImageOptim

❌ Before

Hero image: 4.2MB JPEG | LCP: 6.8s on 3G

✅ After

Hero image: 180KB AVIF | LCP: 2.1s on 3G

2. Enable HTTP/2 + CDN

Impact: -35% TTFB, global edge caching

HTTP/2 multiplexes requests; CDNs serve static assets from servers closest to Lagos/Abuja users.

Implementation:

  • Cloudflare (free tier): Enable "Auto Minify" + "Brotli" compression
  • Cache-Control headers: Cache-Control: public, max-age=31536000, immutable for versioned assets
  • Use versioned filenames: app.a3f8d2.js so browsers cache forever

Nigerian tip: Cloudflare has 2 edge locations serving West Africa (Lagos traffic routes via Europe, but still 40-60% faster than US-only hosting).

3. Minify & Code-Split JavaScript/CSS

Impact: -50% JS bundle size, faster INP

Most Nigerian sites ship 800KB-2MB of JavaScript—including entire libraries users never interact with.

Implementation:

  • Code-split by route: Next.js/Vite do this automatically; each page loads only its JS
  • Purge unused CSS: Tailwind's purge removes 95% of unused styles
  • Defer non-critical JS: <script defer> or <script type="module">
  • Tree-shake dependencies: Use ES6 imports (import { specific } from 'lodash-es')

❌ Before

1.4MB JS bundle | INP: 620ms (slow)

✅ After

280KB initial JS | INP: 180ms (good)

4. Optimize Web Fonts

Impact: -0.8s LCP, eliminates FOUT

Google Fonts add 300-500ms latency. Self-hosted fonts with font-display: swap render text instantly.

Implementation:

  • Download WOFF2 fonts, host locally in /public/fonts
  • Use @font-face with font-display: swap
  • Limit to 2 font weights (Regular + Bold) to save 200KB+
  • Preload critical font: <link rel="preload" href="/fonts/inter.woff2" as="font" crossorigin />

5. Preload Critical Assets

Impact: -0.6s LCP for hero images

Tell the browser to fetch above-the-fold assets (hero image, critical CSS) ASAP, before parsing HTML.

Add to <head>:

<link rel="preload" as="image" href="/hero.avif" fetchpriority="high" />
<link rel="preload" as="style" href="/critical.css" />
<link rel="preload" as="font" href="/fonts/inter-bold.woff2" crossorigin />

6. Reduce Third-Party Scripts

Impact: -1.2s total blocking time

Chat widgets, analytics, ad pixels often add 500KB-1MB of JS and block rendering. Audit and remove unused ones.

Quick wins:

  • Remove: Unused Facebook Pixel, redundant analytics (pick Google Analytics OR Mixpanel, not both)
  • Defer: Chat widget until user scrolls 50% down
  • Use Tag Manager: Load all scripts via GTM with timeout limits
  • Self-host: Google Analytics via Plausible/Umami (70% lighter)

7. Optimize API Responses

Impact: -40% data transfer, faster page hydration

Many Nigerian sites fetch unoptimized APIs returning 2MB JSON payloads with redundant data.

Backend optimizations:

  • Cache GET requests: Redis for 5-60 minutes on static data (product catalogs, blog posts)
  • Paginate: Return 20 items per page, not 500
  • Compress responses: Enable Gzip/Brotli on API server
  • Use GraphQL: Fetch only fields you need ({ id, title, price })
  • Avoid N+1 queries: Use JOIN or DataLoader to batch DB calls

8. Lazy-Load Images & Videos

Impact: -60% initial bandwidth on image-heavy pages

Don't load images/videos below the fold until user scrolls near them. Modern browsers support this natively.

<!-- Images below fold -->
<img src="product.avif" loading="lazy" alt="Product" />

<!-- Videos (only load poster initially) -->
<video poster="thumb.jpg" preload="none">
  <source src="demo.mp4" />
</video>

9. Use Static Generation (SSG)

Impact: -80% server response time

Pre-render content pages at build time. Serve static HTML instead of running server logic on every request.

Best for:

  • Blog posts, product pages, landing pages (95% of Nigerian business sites)
  • Next.js getStaticProps or Astro for ultimate speed
  • Hydrate only interactive components (search, cart)

10. Monitor Core Web Vitals Weekly

Impact: Prevents regressions, maintains speed gains

Set up automated monitoring to catch performance regressions before they hurt traffic.

Tools (all free tiers available):

  • Lighthouse CI: Run on every deploy, fail builds if LCP > 3s
  • Google Search Console: Real-user Core Web Vitals data
  • web-vitals.js: Track LCP/INP/CLS in production with Google Analytics
  • Vercel Analytics: Real-time performance scores per page

11. Set a Mobile-First Performance Budget

Impact: Forces discipline, prevents bloat

Define hard limits on bundle sizes—and enforce them in CI/CD.

Recommended budgets for Nigerian sites:

  • Initial JS: <100KB gzipped
  • Initial CSS: <20KB
  • Hero image: <200KB AVIF
  • Total page weight: <600KB for 3G users

12. Use Image CDNs with On-the-Fly Transforms

Impact: Auto-optimizes images, no manual work

Cloudinary/Imgix automatically serve AVIF/WebP, resize for device, and cache globally.

<!-- Cloudinary URL -->
<img src="https://res.cloudinary.com/.../w_800,f_auto,q_auto/hero.jpg" />
<!-- Auto-serves 180KB AVIF on Chrome, 240KB WebP on Safari -->

Real Case Study: Lagos Fashion Store

A Lagos-based online fashion retailer came to us with a 68% mobile bounce rate. After a 7-day performance sprint, here's what happened:

❌ Before (May 2024)

  • LCP: 7.2s (poor)
  • INP: 680ms (slow clicks)
  • CLS: 0.34 (jumpy layout)
  • Page weight: 4.8MB
  • Mobile bounce rate: 68%
  • Conversion rate: 1.2%

✅ After (June 2024)

  • LCP: 1.9s (good) ⬇️ 73%
  • INP: 160ms (fast) ⬇️ 76%
  • CLS: 0.08 (stable) ⬇️ 76%
  • Page weight: 820KB ⬇️ 83%
  • Mobile bounce rate: 42% ⬇️ 26pp
  • Conversion rate: 2.9% ⬆️ 142%

What we fixed in 7 days:

Days 1-2: Images

Converted 280 product JPEGs to AVIF, added lazy-loading

Day 3: JavaScript

Code-split by route, removed jQuery (saved 380KB)

Day 4: CDN

Migrated to Cloudflare, enabled Brotli + auto-minify

Days 5-6: Fonts & Scripts

Self-hosted fonts, removed 3 unused analytics scripts

Day 7: Monitoring

Set up Lighthouse CI + Google Search Console alerts

Result

₦2.8m extra revenue in first month post-launch

Where to Start? (Priority Matrix)

If you only have 1 week, focus on the highest-impact fixes first:

Day 1-2

Images: Compress to AVIF/WebP, add lazy-loading (40% of gains)

Day 3

JavaScript: Code-split, defer non-critical scripts (25% of gains)

Day 4

CDN: Enable Cloudflare, configure caching (15% of gains)

Day 5

Fonts & Preload: Self-host, preload critical assets (10% of gains)

Days 6-7

Clean-up & Monitor: Remove unused scripts, set up Lighthouse CI (10% of gains)

Want a 7-Day Performance Sprint?

We'll audit your site, fix the top speed bottlenecks, and improve your Core Web Vitals scores—usually within 7 days. Most clients see 30-50% conversion lift within the first month.

Book Your Performance Audit