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. Cloudflare Terms of Service Cloudflare Privacy Policy 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.
Top keywords
- purge38×3.70%
- varnish22×2.14%
- cache12×1.17%
- request10×0.97%
- wordpress10×0.97%
- header9×0.88%
- server9×0.88%
- cloudflare8×0.78%
- sends8×0.78%
- vcl8×0.78%
- managed7×0.68%
- socket7×0.68%
SQLite Object Cache
A persistent object cache helps your site perform well. This one uses the widely available SQLite3 extension, and optionally the igbinary and APCu extensions to php. Many hosting services offer those extensions, and they are easy to install on a server you control. What is this about? It’s about making your site’s web server perform better. An object cache does that by reducing the workload on your MariaDB or MySQL database. This is not a page cache; these persistent objects go into a different kind of cache. These objects aren’t chunks of web pages ready for people to view in their browsers, they are data objects for use by the WordPress software. Caches are ubiquitous in computing, and WordPress has its own caching subsystem. Caches contain short-term copies of the results of expensive database lookups or computations, and allow software to use the copy rather than repeating the expensive operation. This plugin (like other object-caching plugins) extends WordPress’s caching subsystem to save those short-term copies from page view to page view. WordPress’s cache happens to be a memoization cache. Without a persistent object cache, every WordPress page view must use your MariaDB or MySQL database server to retrieve everything about your site. When a user requests a page, WordPress starts from scratch and loads everything it needs from your database server. Only then can it deliver content to your user. With a persistent object cache, WordPress immediately loads much of the information it needs. This lightens the load on your database server and delivers content to your users faster. Who should use this? If your site runs on a single web server machine, and that server provides the SQLite3 and igbinary extensions to php, this plugin will almost certainly make your site work faster. And if that server provides the APCu extension, this plugin uses it too. Some hosting providers offer redis cache servers. If your provider offers redis, it may be a good choice. You can use it via the Redis Object Cache plugin. Sites using redis have one SQL database and another non-SQL storage server: redis. Other hosting providers offer memcached, which has the Memcached Object Cache plugin. And some large multipurpose cache plugins, such as the LiteSpeed Cache, also offer object caching based on one of those cache server software packages. The cache-server approach to object caching comes into its own when you have multiple load-balanced web server machines handling your site. SQLite doesn’t work correctly in a multiple-web-server environment. But, for single-server site configurations, SQLite, possibly assisted by APCu, performs well. And the vast majority of sites are single-server. APCu APCu is an in-memory storage medium. It lets php programs, like WordPress, store data in shared memory so it’s very fast to retrieve when needed. If APCu is available on your host server, you can configure this plugin to use it. It reduces the typical cache lookup time to one-fifth or less of the SQLite lookup time, which is itself a few tens of microseconds. Performance counts, especially on busy web sites. Please look at Installation to learn how to configure this plugin to use APCu. The plugin works fast without it, and faster with it. WP-CLI: Even if APCu is in use, caching with SQLite is necessary when your web site uses WP-CLI, because WP-CLI programs do not have access to the APCu cache. This plugin writes all cached data both to APCu and to SQLite and makes sure the two are synchronized. WP-CLI You can control this plugin via WP-CLI once you activate it. Please type this command into your shell for details. wp help sqlite-object-cache Credits Thanks to Till Krüss. His Redis Object Cache plugin serves as a model for this one. And thanks to Ari Stathopoulos and Jonny Harris for reviewing this. Props to Matt Jones for finding and fixing a bug that appeared on a heavily loaded system. Thanks to Massimo Villa for testing help, and to nickchomey for a comprehensive code review. All defects are, of course, entirely the author’s responsibility. And thanks to Jetbrains for the use of their software development tools, especially PhpStorm. It’s hard to imagine how a plugin like this one could be developed without PhpStorm’s tools for exploring epic code bases like WordPress’s. How can I learn more about making my WordPress site more efficient? We offer several plugins to help with your site’s database efficiency. You can read about them here.