Final Stack: LSCache + Perfmatters
This is a common division of responsibilities:
- LSCache owns page caching.
- Perfmatters owns asset optimization (CSS/JS/lazy load/script manager).
Non-Negotiable Rule
Do not enable the same feature in both plugins.
Ownership Map
| Feature | Owner | Keep disabled in |
|---|---|---|
| Page cache | LSCache | Perfmatters |
| CSS optimization | Perfmatters | LSCache Page Optimization |
| JS optimization | Perfmatters | LSCache Page Optimization |
| Lazy loading | one tool | the other tools |
LSCache: Page Cache
Key points:
- Cache public pages.
- Do not cache logged-in/transactional flows.
- Exclude admin/login routes.
Typical excludes (adjust to your site)
/wp-admin//wp-login.php/cart/,/checkout/,/my-account/(if ecommerce)
tip
TTL can be long when purge rules are reliable. If content updates are not purging correctly, shorten TTL and fix purge behavior.
Perfmatters: Assets
Turn on CSS/JS features step-by-step and verify after each change:
- remove unused CSS (if you can validate templates)
- defer/delay JS (exclude critical scripts)
- lazy load below-the-fold images (exclude LCP)
LSCache: What to Keep Off
If Perfmatters owns CSS/JS, keep LSCache Page Optimization CSS/JS transforms off (minify/combine/async/UCSS/defer). This avoids double-optimization.
Verification
- Confirm cache headers show hits on public pages.
- Confirm bypass on login/admin/checkout.
- Confirm there are no duplicated optimizations (double minify, double lazy load).
Check public page cache headers
curl -sI https://example.com/ | grep -iE 'x-litespeed-cache|cf-cache-status|cache-control'
Checklist
- One owner per feature.
- Cache excludes validated.
- CSS/JS changes applied one at a time with verification.
- Cache headers verified.