Proxy Cache Purge

Automatically purge Varnish Cache when content on your site is modified.

This plugin does not install nor configure a cache proxy. It acts as an interface with such services.

One common method of caching content for websites is via the use of reverse proxy caching. Common examples of this are Varnish and Nginx. These systems allow a website to update content and have the visitor’s experience cached without the need for complex plugins storing the files locally and using up a user’s disk space.

A reverse proxy cache is installed in front of a server and reviews requests. If the page being requested is already cached, it delivers the cached content. Otherwise it generates the page and the cache on demand.

The Proxy Cache Purge plugin sends a request to delete (aka flush) the cached data of a page or post every time it’s modified.

How It Works

When content on a site is updated by WordPress, the plugin reaches out to the proxy cache service with the URL of the page, requesting the cache be deleted.

Not all page are deleted from the cache on every change. For example, when a post, page, or custom post type is edited, or a new comment is added, only the following pages will purge:

  • The front page
  • The post/page edited
  • Any categories, tags, and/or custom taxonomies associated with the page
  • Related feeds
  • Associated JSON API pages

In addition, your entire cache will be deleted on the following actions:

  • Changing themes
  • Pressing the Empty Cache button on the toolbar

Plugins can hook into the purge actions as well, to filter their own events to trigger a purge.

On a multisite network using subfolders, only network admins can purge the main site.

Development Mode

If you’re working on a site and need to turn off caching in one of two ways:

  1. Add define( 'VHP_DEVMODE', true ); to your wp-config.php file
  2. Go to Proxy Cache -> Settings and enable debug mode for 24 hours at a time

That will break cache on page loads. It is not recommended for production!

WP CLI

Purge

Purge commands let you empty the cache.

  • wp varnish purge – Flush the cache for your front page
  • wp varnish purge [<url>] – Flush the cache for one URL

You can use the parameter --wildcard to empty everything from that URL down. So if you wanted to empty cache for all themes, you would do this:

  • wp varnish purge https://example.com/wp-content/themes --wildcard

Debug

Debugging can help you figure out why your cache isn’t working as well as it could. The default is for your home page, but you can pass any URL on your domain.

  • wp varnish debug [<url>]

Available parameters:

  • [--include-headers] — Include headers in debug check output
  • [--include-grep] — Grep active theme and plugin directories for common issues

DevMode

Development mode allows you to disable the cache, temporarily.

  • wp varnish devmode [<activate|deactivate|toggle>] – Change development mode state

Privacy Policy

As of version 5, this plugin no longer uses any remote data.

Download

Latest version: Download Proxy Cache Purge v5.0.3 [zip]

Installation

No special instructions apply.

If you have a 3rd party proxy service (such as Sucuri or Cloudflare) you will need to add an IP address on the Proxy Cache -> Settings page. Alternatively you can add a define to your wp-config.php file: define('VHP_VARNISH_IP','123.45.67.89');

When using Nginx based proxies, your IP will likely be localhost.

Requirements

  • Pretty Permalinks enabled
  • A server based proxy cache service (such as Varnish or Nginx)

Changelog

5.0.3

  • August 2021
  • PHP 8 Compat

5.0.2

  • April 2021
  • Wrapping a function_exists check which shouldn’t be needed, but it fataled for someone and an ounce of prevention yadda yadda.

5.0.1

  • April 2021
  • Updating incompatibility lists
  • HHVM deprecation
  • Allow saving Proxy IP with ports
  • Add check for CloudFlare APO
  • Improve purge execution fails
  • Double check multiple varnish IPs

5.0

  • March 2021
  • Now purges draft and pending posts (to account for people who un-publish) – props @jerlarke
  • Localhost the debugger json. They aren’t updated that often, and the remote load is unnecessary.
  • More support for Health Check
  • Remove strtotime check on Age header – props Matt Fields
  • Support for multiple IPs (based on P.Brisson’s work)

Screenshots

  1. Purge button on Right Now (Dashboard Admin)

    Purge button on Right Now (Dashboard Admin)

  2. Toolbar menu (with cache enabled)

    Toolbar menu (with cache enabled)

  3. Toolbar menu (with cache disabled)

    Toolbar menu (with cache disabled)

  4. Scanner results

    Scanner results

  5. Change Proxy IP address

    Change Proxy IP address

  6. Activate Dev Mode

    Activate Dev Mode

  7. Dev Mode Warning (24 hour notice)

    Dev Mode Warning (24 hour notice)