WPShadow

All Shadow checks

WordPress performance checks for caching and delivery in Shadow

Whether pages are cached and delivered quickly: page and object caching, browser caching headers, compression, HTTP/2 or HTTP/3, a CDN for static files, OPcache and the PHP memory limit.

There are 9 checks on this page. Shadow reports what it finds, and nothing is changed until you approve a fix.

In this family

What each check looks at

Browser Caching Headers

Checks whether static assets (CSS and JS files) are served with long-lived Cache-Control or Expires headers. Without these headers, return visitors re-download unchanged files on every page view, increasing load times and server bandwidth costs. A max-age of at least seven days is expected for versioned assets.

Why it matters. Detects missing Cache-Control headers causing browsers to re-download assets unnecessarily.

Caching Plugin Active

No page-caching plugin detected. Caching dramatically reduces server load and improves response times for all visitors.

Why it matters. Checks whether a recognised page-caching plugin is active or the WP_CACHE constant has been set, ensuring pages are served from cache.

CDN For Static Assets

Checks whether a CDN is configured to serve static assets, which reduces latency for distant visitors and offloads bandwidth from the origin server.

Compression Enabled

HTTP compression (gzip/brotli) does not appear to be active. Enabling compression can reduce page transfer sizes by up to 70%.

Why it matters. Checks whether HTTP compression (gzip or brotli) is active by inspecting the Content-Encoding header returned for the site homepage.

HTTP/2 or HTTP/3 Enabled

Checks whether the site is served over HTTP/2 or HTTP/3 to take advantage of multiplexing, header compression, and improved connection performance.

Why it matters. Detects whether the site is served over HTTP/2 or HTTP/3 by making a cURL HEAD request to the home URL and inspecting the protocol version.

Object Cache

Checks whether a persistent object cache is active. Without one, WordPress must re-query the database on every request for data that could be served from a fast in-memory cache.

Why it matters. Checks whether a persistent object cache (Redis, Memcached) is active to reduce repetitive database queries on every page request.

OPcache Enabled

Checks whether PHP OPcache is enabled and actively caching compiled bytecode. OPcache eliminates the overhead of parsing and compiling PHP files on every request, typically reducing PHP execution time by 30-70%. It is the single highest-impact PHP configuration change available on most shared and managed hosts.

Why it matters. Checks whether PHP OPcache is enabled and returning a live cache status. OPcache is one of the highest-impact PHP runtime improvements because it avoids reparsing and recompiling PHP files on every request.

Page Cache Enabled

Checks whether a full-page caching solution is active on the site. Page caching stores pre-built HTML responses and serves them without executing PHP or querying the database on each visit, typically reducing page generation time by 50-90% and enabling the site to handle traffic spikes gracefully.

Why it matters. Checks if page caching is enabled and working properly.

PHP Memory Limit Optimized

Checks whether the PHP memory_limit is at least 128 MB. A low memory limit causes fatal errors under complex plugins and prevents WordPress from completing large operations.

Why it matters. Checks whether the PHP memory_limit is at least 128 MB, which is the WordPress recommended minimum for reliable operation.

The other check families

Shadow is free and runs on your own server, with no account. The source is on GitHub, and these descriptions come from it.

Find me online: LinkedIn · Bluesky · X · Mastodon · YouTube · GitHub · WordPress.org