How to install and activate xSpeed
Install from the plugin directory or a ZIP, and understand exactly what activation does — and what it deliberately does not do.
Installing xSpeed is an ordinary WordPress plugin install, and it takes a couple of minutes. This guide covers both routes — the plugin directory and a ZIP upload — and then the part worth reading carefully: what activation actually does to your site, and what it deliberately leaves alone.
Requirements
- WordPress 6.0 or newer. Tested up to 7.1.
- PHP 7.4 or newer. Works on 7.4; 8.1+ is recommended and noticeably faster.
- An administrator account. You need the
manage_optionscapability to install plugins and to open xSpeed’s settings.
Install from the WordPress plugin directory
The normal route, and the one that keeps you on automatic updates.
- In your WordPress admin, go to Plugins → Add New Plugin.
- Search for xSpeed Cache. Check the author reads WPDeveloper — several unrelated plugins have similar names.
- Click Install Now, and then Activate.
- You’re redirected to the setup wizard. The plugin installs to
wp-content/plugins/xspeed/.
Install from a ZIP file
Use this for a specific version, for a site with no outbound access to WordPress.org, or to install xSpeed Cache Pro.
- Download the
.zipfile — the free plugin from WordPress.org, or Pro from your WPDeveloper account. - Go to Plugins → Add New Plugin → Upload Plugin.
- Choose the file and click Install Now.
- Click Activate Plugin.
Pro is a second plugin that runs beside the free one rather than replacing it, so install the free plugin first and keep it active — Pro does nothing without it. Once both are active, enter your key under xSpeed Cache → Settings → License. Free vs Pro — what’s included covers how the two fit together.
What happens when you activate
xSpeed is deliberately conservative on activation. It prepares the ground and then stops, because writing a cache drop-in and editing wp-config.php are changes that should follow a decision you made, not a button you clicked to make a plugin appear in a list.
In one request, it:
- Creates the cache directory —
wp-content/cache/xspeed/, with a silence file so it can’t be browsed — and installs a small table for speed-test and scan history. - Sets defaults, but only on a genuinely fresh install. On a clear site you installed yourself that means the Balanced set: GZIP on, browser cache headers on, HTML and CSS minification on. If another plugin already owns the page cache — or has left its cache file behind — it instead writes an explicit off for every free on/off switch, so nothing about your markup or delivery changes. And if another plugin installed xSpeed on your behalf, everything stays off except page caching — that plugin was asked for site speed, so the cache is the one thing it may assume.
- Flags the wizard redirect — a one-shot marker consumed on your next admin page load.
⚠️ When you install xSpeed yourself, activation does not install the cache drop-in, edit
wp-config.php, or start caching.
wp-content/advanced-cache.php, thedefine( 'WP_CACHE', true )line and the.htaccessrewrite block are all written by the enable page caching action — from the wizard, the Page Cache panel, the top bar’s master switch, or an AI agent. Until then your site serves exactly as it did before. The one exception is the install another plugin performed on your behalf, described above: there, activation switches page caching on straight away, and nothing else.
Bulk activation is handled differently. If you activated several plugins at once, the wizard redirect is skipped — pulling you out of that flow to a wizard is not what you asked for. The same applies to AJAX and cron requests, which have no page load to redirect; to anyone without administrator rights; to a site that has already completed the wizard; and to an install another plugin performed, which has its own onboarding that ours would interrupt. In every one of those cases the plugin is installed and working, you simply arrive at the dashboard instead.
One exception is worth knowing about, because it looks like a contradiction. During an update, WordPress runs deactivate → delete files → install → activate, which removes advanced-cache.php while your caching setting is still on. Activation notices that mismatch and puts the drop-in back, so an update never leaves you silently uncached.
After activation
On a fresh install you land on the setup wizard automatically, on your first admin page load. It checks your environment, offers three starting points, and applies the one you pick — see How to run the setup wizard.
If you’d rather skip it, the dashboard is under xSpeed Cache in the left menu, and every setting the wizard writes is available there. The wizard itself never goes away: it stays in the menu as xSpeed Cache → Setup Wizard, permanently re-runnable, at wp-admin/admin.php?page=xspeed-onboarding.
Troubleshooting
The setup wizard didn’t open. The redirect is a one-shot flag, and it’s consumed even when it isn’t used — so if you activated in bulk, over AJAX, or as a non-administrator, it’s already spent. Nothing is wrong: open xSpeed Cache → Setup Wizard from the menu and run it whenever you like.
Caching still isn’t active. That is the expected state after activation, not a fault — activation only turns caching on when another plugin installed xSpeed for you. Open the dashboard and use the Caching switch in the top bar, or run the wizard. If another plugin’s advanced-cache.php is already in place, switching it on asks first and names the owner — confirm with Take over and enable. If it still refuses, the message names the reason: a cache file xSpeed can’t read, a wp-config.php that isn’t writable, or a WP_CACHE line already set to false.
You’re on nginx and hits are slower than expected. Page caching works, but through the PHP drop-in rather than the server. nginx configuration lives outside WordPress, so xSpeed generates the block and asks you to paste it into your server { } and reload. Check with curl -s -o /dev/null -D - https://yoursite.com/ | grep -i x-xspeed-cache while logged out — see Understanding cache HITs and MISSes.