Online store performance audit — complete methodology & checklist
A serious audit is not "we ran Lighthouse". It's a structured methodology across three layers — frontend, backend, infrastructure — with KPIs measured before/after and a roadmap prioritized by ROI. We show exactly what a correct audit contains, what tools we use, and what you get in the report.
What an audit solves (and what it doesn't)
An audit answers questions Google Analytics can't: why the store is slow, where time is lost, how much each problem costs, and how to fix it with positive ROI.
It is not: a 50-page report with Lighthouse screenshots. Not a generic "install a cache plugin" recommendation. A real audit contains concrete measurements, root causes, and a plan with impact estimates.
The three layers of the audit
1. Frontend — what reaches the browser
- Real Core Web Vitals (CrUX): LCP, INP, CLS on real visitors — from Chrome UX Report and Search Console.
- Lab data (Lighthouse): run on 5-10 representative pages (home, category, product, checkout), mobile + desktop separate.
- Bundle analysis: what JS/CSS loads on each page, how much gzipped, what of it is unused.
- Images: format, dimensions, compression, presence of
width/height, lazy load,fetchpriorityon LCP. - Third-party: inventory of external scripts (analytics, chat, pixels), main thread impact.
- Fonts: families loaded,
font-display, preload, subset.
2. Backend — what happens on the server
- TTFB per route: home, list, product, search, checkout. p50/p95/p99 distribution.
- Slow query log analysis: top 20 slow queries, EXPLAIN on each, identify missing indexes and N+1.
- Connection pool: size, utilization, queue, handshake latency.
- Cache hit rate: object cache, query cache, page cache. Below 80% = opportunity.
- Application: profiling (Xdebug, py-spy, Node profiler) on slow endpoints — where time is spent.
3. Infrastructure — hosting, network, edge
- Server specs: CPU, RAM, disk (HDD vs SSD vs NVMe), saturation at peak.
- Topology: single server vs separate web/DB, presence of reverse proxy (nginx, Varnish), active CDN.
- Geography: TTFB from 3-5 locations (RO, DE, US) — penalty for international visitors.
- Scaling: behavior at 2x, 5x, 10x traffic. When it breaks.
- Cost: current cost vs optimized cost after migration/upgrade.
KPIs — what we measure
| KPI | Definition | Target |
|---|---|---|
| TTFB p50 | Server time for 50% of requests | <200ms |
| TTFB p95 | Server time for slowest 5% | <500ms |
| LCP (mobile) | Largest Contentful Paint on mobile | <2.5s |
| INP | Interaction to Next Paint | <200ms |
| CLS | Cumulative Layout Shift | <0.1 |
| JS bundle (gzip) | Total JS per page | <150KB |
| Total page weight | Sum of all resources | <1MB |
| Cache hit rate | % requests served from cache | >80% |
Tools — the audit stack
- PageSpeed Insights: Lighthouse + CrUX on any URL. Starting point.
- WebPageTest: waterfall + filmstrip + before/after comparison, multiple locations and devices.
- Chrome DevTools — Performance & Network: local profiling, 3G/CPU throttling simulation.
- Search Console — Core Web Vitals & Page Experience: how real visitors see you, aggregated.
- EXPLAIN + slow log + pg_stat_statements: on the database side.
- htop / Netdata / Grafana: real-time server saturation, under load.
- k6 / Locust: load testing — behavior at 100/500/1000 concurrent users.
Audit checklist — what I tick on every store
- Images: modern format, responsive, lazy load, dimensions on all
- LCP: preload + fetchpriority on hero image
- JS: defer on all, route code-splitting, Partytown on analytics
- CSS: critical inline, rest async
- Fonts: max 2 families, font-display swap, preload, subset
- Composite indexes on slow queries (identified via EXPLAIN)
- Eager loading over detected N+1
- Object cache (Redis) active with hit rate >80%
- Connection pool correctly sized
- Reverse proxy with full page cache on static routes
- CDN for static assets + images
- HTTP/2 or HTTP/3, Brotli/Gzip compression
- Schema.org markup for rich snippets
- Correct sitemap + robots
What you get in the report
At the end of the audit, we deliver:
- Executive summary (1 page): current state, top 5 problems, estimated impact per problem, implementation cost.
- Detailed report (15-30 pages): before measurements per KPI, analysis per layer (frontend/backend/infra), tool screenshots.
- Prioritized roadmap: quick wins (1-2 weeks, high impact, low cost), medium optimizations, strategic initiatives (headless migration, edge rendering). Estimated LCP/INP/conversion per action.
- Firm quote: price per phase, timeline, what's in our scope vs what the internal team can do.
Concrete case — audit on a fashion store
Shopify Plus store, 80k visitors/month. Complaint: "sales are dropping, we feel the site is slow".
Top 5 problems found:
- LCP 4.1s on mobile (hero 3.8MB)
- 22 Shopify apps, 1.8MB JS on homepage
- INP 520ms (4 apps listen to document clicks)
- TTFB 900ms (no edge cache on category pages)
- CLS 0.28 (images without dimensions)
Roadmap (8 weeks): image conversion + apps cleanup (week 1-2), Partytown + lazy (3-4), edge cache + Redis (5-6), QA + monitoring (7-8).
Result after 60 days: LCP 1.9s, INP 180ms, CLS 0.05. Organic traffic +18%. Conversion 2.1% → 2.9% (+38%). Audit cost: 700 EUR. ROI in 11 days.