WordPress Site Performance Audit
Performance audit is diagnostics of bottlenecks before optimization starts. Without audit, optimization is shooting blind. Result: concrete list of problems with measurable impact on speed.
Measurement Tools
External (simulate user):
- Google PageSpeed Insights — Core Web Vitals assessment, recommendations
- GTmetrix — load waterfall, filmstrip, test regions
- WebPageTest — detailed HAR, load video, multi-location testing
- Lighthouse CLI — command-line run for automation
Internal (server-side):
- Query Monitor — plugin, SQL queries, hooks, PHP time
- New Relic APM — PHP profiler
- Blackfire — detailed function profiling
Audit Methodology
1. Measure baseline metrics before optimization:
# Lighthouse CLI
npx lighthouse https://yourdomain.com \
--output json \
--output-path ./audit-before.json \
--chrome-flags="--headless"
# TTFB via curl
curl -o /dev/null -s -w "TTFB: %{time_starttransfer}s\nTotal: %{time_total}s\n" \
https://yourdomain.com
2. Server time analysis (Query Monitor):
Install Query Monitor, open any page, check:
- Total query time (goal: < 50 ms)
- Number of queries (goal: < 30)
- Slow queries (> 5 ms each)
- Duplicate queries (same query multiple times)
3. PHP Analysis:
# Enable PHP-FPM slow log
; /etc/php/8.3/fpm/pool.d/www.conf
slowlog = /var/log/php-fpm-slow.log
request_slowlog_timeout = 2s
4. MySQL Analysis:
-- Enable slow query log
SET GLOBAL slow_query_log = ON;
SET GLOBAL long_query_time = 0.5;
SET GLOBAL slow_query_log_file = '/var/log/mysql/slow.log';
-- Analyze via mysqldumpslow
mysqldumpslow -s t -t 10 /var/log/mysql/slow.log
Typical Findings and Impact
| Problem | Impact | Fix |
|---|---|---|
| No OPcache | -40% PHP time | Enable in php.ini |
| No Redis/Memcached | -50-70% DB queries | Install object cache |
| No page cache | TTFB 500ms+ | WP Rocket / FastCGI cache |
| Unoptimized images | +2-5 MB per page | WebP + resize |
| Render-blocking JS | LCP +1-3 s | defer/async |
| Autoload options > 1 MB | +200ms per request | Cleanup wp_options |
| Slow plugin | +300ms | Replace or optimize |
| No CDN | +500ms for remote users | Cloudflare / BunnyCDN |
| HTTP/1.1 instead HTTP/2 | Multiple RTTs | Enable in Nginx |
| No gzip/brotli | +200-500 KB traffic | Enable in Nginx |
Plugin Analysis
# Plugin profiling via WP-CLI + Blackfire
wp plugin list --fields=name,status --format=csv | while IFS=, read name status; do
if [ "$status" = "active" ]; then
wp eval "
\$start = microtime(true);
do_action('init');
echo '$name: ' . round((microtime(true) - \$start) * 1000) . 'ms\n';
"
fi
done
Core Web Vitals: Target Values
| Metric | Good | Needs Work | Poor |
|---|---|---|---|
| LCP (Largest Contentful Paint) | < 2.5 s | 2.5–4 s | > 4 s |
| INP (Interaction to Next Paint) | < 200 ms | 200–500 ms | > 500 ms |
| CLS (Cumulative Layout Shift) | < 0.1 | 0.1–0.25 | > 0.25 |
| TTFB | < 200 ms | 200–800 ms | > 800 ms |
Audit Completion
Audit completes with document containing:
- Measured metrics (baseline)
- List of problems with priorities
- Concrete recommendations for each
- Predicted result after fixes
Timeline
WordPress site performance audit with report and recommendations—1–2 days.







