Troubleshooting
Slow Site Despite Caching
Your site is cached but still feels slow? Here's what to check.
1. Verify caching is working
First, confirm your content is actually being cached. Check the response headers:
X-Cache: HIT ← Content served from cache
X-Cache: MISS ← Content fetched from originIf you see all MISSes, check if your origin is sending Cache-Control: no-cache or private headers.
2. Check for uncached resources
Even if your HTML is cached, slow third-party resources can drag down performance.
Common culprits:
- Google Fonts loaded synchronously
- Analytics scripts (Google Analytics, Facebook Pixel)
- Chat widgets (Intercom, Drift, Crisp)
- External ad scripts
- Social media embeds
Tip: Load third-party scripts with async or defer attributes to prevent them from blocking page render.
3. Large images on the page
Even with WebP conversion, oversized images slow down LCP.
Solutions:
- Resize images to the actual display size (don't serve 4000px images for 800px containers)
- Use responsive images with
srcset - Lazy load images below the fold
- Consider using a hero image that's optimized for the viewport
4. Slow origin server
For cache MISSes (first requests, dynamic pages), your origin speed still matters.
Check your origin:
- Slow database queries (check slow query logs)
- Missing database indexes
- Too many plugins (WordPress/WooCommerce)
- Insufficient server resources
- No opcode caching (PHP)
Goal: Origin TTFB should be under 500ms. Fast caching amplifies your origin speed — a fast origin means even faster cached responses.
5. Render-blocking resources
CSS and JS in the <head> block page rendering.
Solutions:
- Inline critical CSS in the
<head> - Load non-critical CSS with
media="print" onload="this.media='all'" - Add
deferto JavaScript files - Move scripts to the bottom of
<body>
Performance checklist
- X-Cache shows HIT for static resources
- Third-party scripts are async/deferred
- Images are appropriately sized
- Origin TTFB is under 500ms
- No render-blocking resources in head