Browser cache misconfigured on WordPress
Cache-Control headers are absent or misconfigured. Browsers do not cache your static files (images, CSS, JS).
Why it matters
Without browser cache, each visit re-downloads all files - even unchanged images and scripts. Good caching can reduce load time for return visits by 80%.
How to fix
- 1
Via .htaccess (Apache)
apache<IfModule mod_expires.c> ExpiresActive On # Images : 1 an ExpiresByType image/jpeg "access plus 1 year" ExpiresByType image/png "access plus 1 year" ExpiresByType image/webp "access plus 1 year" ExpiresByType image/svg+xml "access plus 1 year" # CSS et JS : 1 mois ExpiresByType text/css "access plus 1 month" ExpiresByType application/javascript "access plus 1 month" # HTML : pas de cache (contenu dynamique) ExpiresByType text/html "access plus 0 seconds" </IfModule> - 2
Via Nginx
nginxlocation ~* \.(jpg|jpeg|png|webp|svg|css|js|woff2)$ { expires 1y; add_header Cache-Control "public, immutable"; } - 3
Asset versioning (cache busting)
To avoid serving outdated files, WordPress automatically versions its assets via the ?ver= parameter. Your theme and plugins should do the same.
Ready to fix this issue on your site?
Audit my site for free →