Performance Measurement, Monitoring, and Troubleshooting
Measure the right thing
Separate synthetic (lab, controlled, repeatable) from real user monitoring (field, real conditions, variable). Core Web Vitals - LCP, INP, CLS - are field metrics judged at the 75th percentile. Server-side signals include cache hit ratio, origin offload, TTFB, and error rates; client-side signals include resource timing and navigation timing. Use percentiles (p50/p75/p95), not averages, because averages hide the tail users actually feel.
Troubleshooting method
Work the path in order: DNS → TLS → edge (cache status, behaviors) → origin (response time, errors) → client render. Useful diagnostics: response headers (Age, Cache-Control, X-Cache-style status, Vary), trace/request identifiers to correlate edge and origin logs, and comparing a cache HIT versus MISS for the same URL. A sudden hit-ratio drop usually points to a cache-key change, a new query parameter, a cookie, or a shortened TTL.
Traps
- Judging performance by averages instead of p75/p95.
- Treating a synthetic lab score as a substitute for field data (or vice versa).
- Ignoring that a single user's slow result may be geography, device, or cache state, not the platform.
- Forgetting that a MISS on first request is expected; repeated MISSes are the problem.
Rule of thumb
When hit ratio falls, diff the cache key first (query strings, cookies, Vary), then TTLs, then purge activity. When latency rises, compare HIT vs MISS TTFB to isolate edge from origin.