plugin-icon

MSCache Varnish Purge

Purge Varnish cache from the WordPress admin: automatic purge on content changes, exclusions, manual tools and full cache purge.
版本
1.0.0
最近更新:
Jun 15, 2026
MSCache Varnish Purge

MSCache Varnish Purge helps WordPress administrators purge the Varnish cache for sites running behind a Varnish HTTP reverse proxy. It is developed by Managed Server S.r.l. and provides settings for configuring the Varnish connection, automatic cache invalidation when content changes, and manual purge tools available from the WordPress admin area.

This plugin is useful when your WordPress site sits behind Varnish and you need cached pages to be invalidated after content is published or updated, or on demand. It requires a reachable Varnish instance whose VCL is configured to accept PURGE requests from the WordPress server (see the FAQ for a reference VCL).

The settings page is available at Settings MSCache Varnish Purge. On WordPress Multisite, shared connection settings are configured at Network Admin Settings MSCache Network, while each site keeps its own purge options.

Key Features

  • Asynchronous raw socket PURGE — sends PURGE requests via a direct TCP socket (fsockopen) without waiting for the Varnish response, so the purge request does not block the WordPress request.
  • Automatic purge on content changes — when a post, page, or custom post type is published, updated, trashed, or deleted, the plugin automatically purges the affected URLs including the post itself, home page, categories, tags, author archives, and date archives.
  • Full cache purge — supports multiple methods for purging the entire cache: PURGE wildcard, PURGE custom path, or BAN with configurable header.
  • Additional URLs — define a list of extra paths to purge alongside content changes or on demand.
  • Exclusion patterns — define glob or regex patterns for URLs that should be excluded from caching. Matching requests receive the ms-cache: excluded HTTP header, which can be used by Varnish to skip caching.
  • Admin bar integration — quick-access purge buttons in the WordPress admin bar: Purge All, Purge Home, Purge Current Page.
  • Bulk and row actions — purge cache for selected posts/pages directly from the list table.
  • Debug logging — optional logging of all purge operations to a protected log directory.
  • PHP 7 and PHP 8 compatible — works on PHP 7.0 through PHP 8.x without deprecation warnings.

How It Works

The plugin opens a raw TCP socket to your Varnish server and sends an HTTP PURGE request with the appropriate Host header. The socket is closed immediately after writing the request — the plugin does not wait for Varnish to respond. This “fire and forget” approach is designed to avoid blocking the WordPress request while the purge is processed.

External Services

This plugin optionally connects to the following external services when configured by the administrator:

Cloudflare API — When the Cloudflare integration is enabled, the plugin sends cache purge requests to the Cloudflare API v4 (https://api.cloudflare.com/client/v4/) to synchronize Varnish cache invalidation with Cloudflare CDN edge cache. This requires a Cloudflare account, a Zone ID, and an API Token with “Zone.Cache Purge” permission. No personal data or visitor information is transmitted — only URL paths and authentication credentials are sent.

Varnish Cache — The plugin opens raw TCP socket connections to a Varnish server at a user-configured IP address and port (default: 127.0.0.1:80). This is typically a localhost connection to infrastructure managed by the site administrator. No external third-party service is contacted for this functionality.

Data Handling & Logging

When debug mode is enabled by the administrator, the plugin logs technical data (URL paths, timestamps, socket connection status, purge results) to files in wp-content/uploads/mscache-logs/. Log files are protected with .htaccess rules, obfuscated filenames, and an index.php guard. No personally identifiable information (PII) or visitor data is collected, stored, or transmitted. Purge statistics (success/failure counts, recent activity) are stored in the WordPress options table and are visible only to administrators.

Configuration

General Settings

  • Enable Plugin — master switch for all purge functionality.
  • Varnish IP — the IP address of your Varnish server (default: 127.0.0.1).
  • Varnish Port — the port Varnish listens on (default: 80).
  • Custom Host Header — override the Host header sent with purge requests. Leave empty to use your WordPress site URL.
  • Socket Timeout — connection timeout in seconds (default: 5).

Automatic Purge

Choose which content changes trigger automatic cache purge:

  • Posts, Pages, Custom Post Types
  • Home page
  • Category, tag, author, and date archives

Full Cache Purge

Three methods are available:

  • PURGE /.* — sends a PURGE request with a wildcard path. Requires Varnish VCL to handle regex/wildcard PURGE.
  • PURGE custom path — sends PURGE to a specific path (e.g., /purge-all). Useful when your VCL maps a special path to a full ban.
  • BAN with custom header — sends a BAN request with a configurable header name and value. The most flexible option but requires matching VCL configuration.

Important: The actual behavior of a full purge depends entirely on your Varnish VCL configuration. The plugin only sends the request — it is your VCL that decides what gets purged.

Additional URLs

Enter one URL per line (absolute or relative paths). These URLs can be purged:

  • Automatically alongside post/page saves (if the option is enabled)
  • Manually via the “Purge Additional URLs” button

Exclusions

Define patterns (one per line) for URLs that should be excluded from caching. Two matching modes:

  • Glob (default) — supports * (any characters) and ? (single character). Example: /wp-admin/*, /cart*, *.xml
  • Regex (advanced) — full regular expression support. Use with caution.

When a frontend request matches an exclusion pattern, the plugin sends the HTTP header ms-cache: excluded. Your Varnish VCL can check for this header and bypass caching accordingly.

Lines starting with # are treated as comments and ignored.

Matching is performed on the request path only, ignoring the query string.

Disclaimer

This plugin is provided “as is” under the terms of the GNU General Public License v2 or later. MANAGED SERVER S.R.L. does not warrant that the plugin will function correctly on hosting environments, servers, or Varnish configurations not directly managed by the company. The plugin has been tested and validated exclusively on the Managed Server hosting infrastructure. Use on third-party environments is at the user’s sole risk and responsibility. In no event shall MANAGED SERVER S.R.L. be liable for any direct, indirect, incidental, or consequential damages arising from the use of this plugin outside of the Managed Server infrastructure.

目前已測試版本
WordPress 7.0
此外掛程式已可供下載,並可用於你 系統。