ProCacheSync by NB Communication

Synchronises ProCache clearing across a multi-instance environment.

ProCache Sync

Synchronises ProCache clearing across a multi-instance environment.

Overview


The main purpose of this module is to allow ProCache to be used in an auto-scaling multi-instance environment.

How it works

When a page is saved and cache clearing is triggered, the page id(s) associated with that clear are saved to the database. ProCacheSync runs a check every minute via LazyCron to look for records in the database since ProCache was last cleared. If it finds any it processes them as ProCache would. Any records it finds will have been generated by a clear on another server instance, thus enabling multiple instances of ProCache to stay approximately synchronous.

However, as LazyCron requires an actual PHP page to be run, and the whole point of ProCache is to serve static HTML without touching PHP/MySQL, it is recommended that you also implement the following in your site's Javascript:

const key = 'ProCacheSync';
if (!sessionStorage.getItem(key)) {
	navigator.sendBeacon(`?${key}=1`);
	sessionStorage.setItem(key, 1);
}

This will trigger a request to sync once per user session. Given that a multi-instance environment is for high traffic sites, it should be reasonable to assume that this will trigger the sync often enough. Alternatively, a cron job could be set up to request an uncached page (via a cache buster URL or POST request etc) every minute should regular traffic not be guaranteed.

Installation


  1. Download the zip file at Github or clone the repo into your site/modules directory.
  2. If you downloaded the zip file, extract it in your sites/modules directory.
  3. In your admin, go to Modules > Refresh, then Modules > New, then click on the Install button for this module.

ProcessWire >= 3.0.210 and PHP >= 8.1.0 are required to use this module.

License


This project is licensed under the Mozilla Public License Version 2.0.

Install and use modules at your own risk. Always have a site and database backup before installing new modules.

Twitter updates

    Error retrieving Twitter status

Latest news

  • ProcessWire Weekly #471
    In the 471st issue of ProcessWire Weekly we're going to check out the latest core updates, introduce a new third party textformatter module for video embedding, and more. Read on!
    Weekly.pw / 20 May 2023
  • A look at the new Page Edit Restore module
    The new Page Edit Restore module helps to prevent page edits in the admin from getting lost when the user’s session is lost. This post covers it in detail.
    Blog / 12 May 2023
  • Subscribe to weekly ProcessWire news

“ProcessWire is like a breath of fresh air. So powerful yet simple to build with and customise, and web editors love it too.” —Margaret Chatwin, Web developer