Features
Multisite
Caching Out works on a WordPress Multisite network. Every site in the network keeps its own settings, its own cached pages, its own licence and its own switch-on state; a few things are shared by nature because WordPress itself shares them. This article says which is which, what the Network Admin screen shows, and what to check when one site in a network behaves differently from the others.
What is per site, what is shared
| Per site (each site has its own) | Shared by the whole network |
|---|---|
| Settings (every tab) | The advanced-cache.php drop-in |
Cached pages (wp-content/cache/cachingout/site-<id>/; the main site uses the root) | The WP_CACHE constant in wp-config.php |
Runtime settings snapshot (runtime-config-<id>.php, see below) | The Browser Caching rules in .htaccess (one file per install) |
| Licence and switch-on state | The kill-switch constants (CACHINGOUT_DISABLE_CACHE and the others) |
| Activity (change record) | |
| Setup Wizard, Insights, Page Audit |
Nothing is applied network-wide by default. Changing a setting on one site changes that site only.
The runtime settings snapshot, per site
The drop-in serves cached pages before WordPress loads, so it cannot read the database. Instead it reads a small snapshot file that the plugin writes on activation and on every settings save.
On a network each site writes its own snapshot, wp-content/cache/cachingout/runtime-config-<blog id>.php. The shared runtime-config.php follows the main site and carries the list of sites the drop-in uses to work out which site a request belongs to. A request for a subsite is served with that subsite's cache lifespan, cookie exclusions and query-string allow-list, not with whichever site saved its settings last.
A site that has never saved its settings has no snapshot of its own and is served with the shared one until it does. The Network Admin screen says so next to the site, and the site's own Filesystem Check reports it under "Runtime settings snapshot". Saving any settings page on that site once fixes it.
Purging a site's cache leaves the snapshots in place, and a purge on one site never clears another: since 0.1.20 every purge the plugin triggers on a site (theme switch, menu or widget change, term edit, plugin activation, settings save, the admin-bar Purge, wp cachingout purge) clears that site only. The whole network is cleared only by Purge every site in Network Admin.
Where the network screens are
Network administrators (the manage_network_options capability) get a Caching Out entry in the Network Admin menu (My Sites > Network Admin > Caching Out, or /wp-admin/network/admin.php?page=cachingout-network). It is not a tab inside a site's own Caching Out settings, because those settings belong to one site; the network screens sit where WordPress puts everything that spans sites (Sites, Themes, Plugins at network level). The screens use the same look as the plugin's own settings pages and have two tabs: Sites and Apply settings to sites.
Network Admin > Caching Out > Sites
The Sites tab lists every site in the network, 200 per page, with:
| Column | Meaning |
|---|---|
| Site | The site's address; "(main site)" for the network's main site; a note when the site has no snapshot of its own yet |
| Switched on | Whether Caching Out Pro has been switched on by a licence on that site (see Licensing); "Locked" means Pro is installed there but no licence has validated yet. The free plugin's page cache does not wait for this |
| Page cache | The site's Page Caching toggle |
| Licence | The site's licence status |
| Last purge | When the site's cache was last purged, from its own Activity record |
| Insights | The site's latest Insights performance score, when an audit has run |
| Actions | Purge clears that one site's cached pages and records a purge row with source network on that site's Activity page. Open goes to the site's Caching Out settings. Activity goes to the site's change record, where anything applied from Network Admin can be reverted. |
Above the table, Purge every site clears every site's cached pages at once. It is the only action anywhere in the plugin that clears the whole network: a purge triggered on one site (a theme switch, a menu change, a settings save, the admin-bar Purge) clears that site only.
What each button does, and how to undo it
| Button | What it does | What it does not do | Undo |
|---|---|---|---|
| Purge (one row) | Deletes that site's cached pages under wp-content/cache/cachingout/site-<id>/ (the main site's live in the cache root) and recreates the guard files. Records a purge row with source network on that site's Activity page. | Touches no other site, no settings, no snapshot, no server file. | Nothing to undo: pages are rebuilt on the next visit, or by Preload if that site has it on. |
| Purge every site | The same, for each site in turn, one row per site. | Same as above. | Same as above. |
| Open | Opens that site's own Caching Out settings, exactly as its administrator sees them. | Changes nothing. | – |
| Activity | Opens that site's change record. | Changes nothing. | Revert lives here. |
Network Admin > Caching Out > Apply settings to sites
Apply settings to sites copies one settings section to the sites you choose, in three steps. The first two write nothing.
Step 1: choose
Pick three things:
- Copy from: a site in the network, or Plugin defaults (the values a fresh site starts with).
- Section: one of Cache, Browser Caching, Media, File Optimization (including every Unused CSS/JS rule), or Preload. One section at a time, so the preview stays readable; everything outside the section stays exactly as each site has it. The screen lists what each section contains.
- Apply to: tick the target sites. Nothing is ticked by default and nothing is ever applied network-wide on its own. Ticking the source site itself is harmless; it shows as "no change".
Not offered, on purpose: Licence (per site, see below), Insights consent (each site opts in for itself) and Database cleanup (it has its own per-site preview before anything is deleted).
Clicking Preview changes reads the source once. Its own settings are never changed by this flow.
Step 2: preview
Every target site is listed as a card with each setting that would change, its current value ("Now") and the new one ("After"). Three states:
- N settings change: this site will be saved when you confirm.
- No change: this site already has these values. It is greyed out and will not be saved, purged or written to, and nothing appears on its Activity page.
- Refused: the site could not be read (for example it no longer exists). It is left out; the others are unaffected.
A site that is not switched on yet (no licence validated there) is marked with a lock: the values are saved and take effect the moment a licence switches it on; nothing is written to the server before then.
Back returns to step 1 with nothing written. Cancel returns to the Sites tab with nothing written.
Step 3: apply
Clicking Apply to N sites writes exactly the values shown in the preview, even if someone edits the source site in the meantime. For each site that was marked as changing, and only those, the plugin:
- saves the chosen section on that site through the same checks as a save on the site itself (the same sanitizer, so an out-of-range value is clamped the same way);
- rewrites that site's settings snapshot for the cache drop-in (
runtime-config-<id>.php); - rewrites the shared
.htaccessBrowser Caching rules if the site is switched on and the section touches them; - purges that site's cached pages if a setting that shapes page output changed (no other site is purged);
- records one row per changed setting on that site's Activity page, with source
network.<user id>(the network administrator's user id) and the value before and after.
The Sites tab then shows a notice: how many sites changed, how many already matched (left untouched) and how many were refused.
Undoing an apply
- One site: open that site's Activity page (the Activity button on the Sites tab), find the rows with source
network.<id>, click Revert on each. Each revert restores the "Now" value the preview showed for that one setting, and is itself recorded. - Several sites at once: run Apply settings again from a source that still has the old values (a site you did not change, or the plugin defaults), tick the sites, preview, confirm.
- A site that was not switched on keeps the applied values until reverted; revert works there too.
An Unused CSS/JS rule that names a file a site never loads does nothing on that site: a rule only unloads what the site actually enqueues.
Asking the assistant
The AI Assistant on any site can answer questions about these screens from this article: where they are, what each step writes, what a "network" row on the Activity page means and how to revert it. It cannot run an apply or a purge for you; those stay behind the confirm buttons.
Activating on a network
Activate the plugin per site, or network-activate it. Network activation runs the activation steps on every site in turn, so each site starts with its own settings, its own runtime snapshot and its own Pro switch-on state; the free page cache is on for every site at once, while a site that has never had Caching Out Pro starts with Pro locked until a licence is validated on it (see Licensing); a site that already had Pro stays switched on. Each site's Filesystem Check shows that site's activation report.
The drop-in, WP_CACHE and the Browser Caching rules are written once for the whole install by whichever site activates first, because WordPress has one wp-content and one wp-config.php.
Licensing on a network
Today the licence server counts each site's address separately, so every subsite that validates a licence counts as one site against the licence's site limit. Enter the licence on each site you want switched on. A network-level licence entered once in Network Admin is planned.
Troubleshooting
| Symptom | Cause | Fix |
|---|---|---|
| A subsite serves pages with the main site's lifespan or exclusions | The subsite has no snapshot of its own (it never saved its settings), so the shared snapshot is used | Open the subsite's Caching Out settings and click Save Changes once; the Filesystem Check on that site confirms runtime-config-<id>.php |
| Every subsite on a subdirectory network was cached into the main site's directory (versions before 0.1.20) | The drop-in matched the first site whose address was a prefix of the request, and the main site's address is a prefix of every subsite's | Fixed in 0.1.20: the longest matching site wins. Purge once after updating |
| Purge on the Network Admin screen says it could not purge a site | That site's cache directory is not writable | Check permissions on wp-content/cache/cachingout/site-<id>/ |
| A site's Filesystem Check says the runtime snapshot is missing | The site has not saved its settings since the snapshot was removed | Save any settings page on that site once |
| Network Admin shows "Locked (no licence yet)" for a site | Pro is installed on that site but no licence has validated there; the free page cache is already running | Validate a licence on that site (Caching Out > License) |
| Apply settings reports a site as refused | The site no longer exists, or its save failed (a database or file error on that site) | Open that site's Caching Out settings and save once; its Filesystem Check names the failing write |
A setting changed on a site and its Activity page shows source network.<id> | A network administrator (user id <id>) applied it from Network Admin | Revert it from that site's Activity page like any other change |