PageSpeed 90+ is a genuinely achievable target for any PHP site. Here is a step-by-step plan, ordered from the biggest impact down to the details.
The steps, most important first
1. TTFB — server response time (the biggest lever)
Target: TTFB under 200 ms. What it takes:
- a Redis cache for OpenCart/WordPress
- Nginx FastCGI cache or Varnish for static pages
- the Cloudflare CDN — caching at the edge
2. LCP — the largest contentful element
Usually the hero image. The fix:
<link rel="preload" href="hero.webp" as="image" fetchpriority="high"> <img src="hero.webp" loading="eager" fetchpriority="high">
3. Render-blocking resources
<!-- Instead of: --> <script src="app.js"></script> <!-- Use: --> <script src="app.js" defer></script>
4. Images — WebP and lazy loading
Convert every image to WebP (2–3× smaller). In Nginx:
map $http_accept $webp_suffix {
"~*webp" ".webp";
}
5. Unused CSS/JS
Use the Chrome Coverage tab to find unused CSS and JS. PurgeCSS works well for WordPress themes.
Real-world results
OpenCart with Redis + Nginx cache + WebP: Mobile 85–92, Desktop 96–99.
WordPress with LiteSpeed Cache + WebP: Mobile 88–93, Desktop 95–98.
Need this optimisation? PageSpeed 90+ for your site.