Make Me Static, Static Site Generator for Git publication Make Me Static, Static Site Generator for Git publication

Make Me Static, Static Site Generator for Git publication

Created by: Mad Penguin Consulting Ltd

Rating:
Downloaded: 263 times

Welcome to the Make Me Static Plugin for WordPress. This plugin is a static site generator and aims to create and maintain a static copy of your WordPress website within a Git repository.
The intention is that this Git repository can be used as a source for a static page provider who can monitor Git updates and automatically publish a static copy of your site from the current contents of your repository.
The plugin provides a customised sitemap and change tracking which connects to the external MMS service which does all the heavy lifting.

What do we rely on?

This plugin employs a third party service to scan a WordPress site and store the resulting static copy in a Git repository. The service retains a metadata database for the site which includes file names, sizes and modification times, together with any credentials that have been added when creating a profile. (Sensitive credentials and other information is encrypted at rest). The external service is responsible for all scanning and processing activities to mitigate strain on the WordPress server.
The only private data transferred to the external service is the information you enter when creating a profile. All other information is obtained via an anonymous external scan, hence publically available.

The plugin references the third party service via directory services which are accessed at;
* https://mms-directory-1.madpenguin.uk
* https://mms-directory-2.madpenguin.uk
* https://mms-directory-3.madpenguin.uk

This in turn will refererence the crawler allocated to the site in question. Crawler URLs typically take the form https://mms-crawler-(n).madpenguin.uk. For on-premisis crawlers the
url will also include a customer-id prefix, but will always end in “.madpenguin.uk”.

Useful links relating to the 3rd party service

Note that this in an integrated solution, the 3rd party service is owned and operated by the plugin authors on a combination of cloud hosted and on premisis equipment.

How Does it work?

The WordPress site is scanned by the MMS service under direction from the WordPress plugin. This off-loads the scanning process to specialised software aims to minimise the loading on the WordPress server while scans are in progress.

There are three types of scan that can be performed;

  • An “update”, which literally only looks at entries with changed sitemap timestamps
    (this is very quick and great for typo’s and any changes that only affect a single page)

  • A “synchronise”, typically this will scan every asset on the WordPress site and compare a checksum of each asset against it’s database to see if it’s changed since the last scan. Any changes are then transferred to the connected Git repository.

  • A “Git verification”, this is like a “synchronise”, but also scans the Git repository for assets that are no longer referenced by the site (and removes them).

As the site is scanned “from the outside” there should be no risk of the plugins actions exposing any data that isn’t already public. By the same token the external service has no ability to modify WordPress so the security footprint of the plugin is tiny.

Feature bullet points

  • The plugin provides a way to produce a static copy of your website in a git repository
  • The result is compatible with both Github pages and CloudFlare pages for automatic publication
  • Multiple profiles are supported for (A+B_…) testing
  • Various scan rates are supported from one page per 5s to 7 cores flat out
  • Scheduled updates are supported and automated scanning
  • Currently “Gitlab” is supported with plans for GitHub and on-prem Gitlab
  • Support push services (WebPushr) to automatically notify subscribers on scan completion
  • Issue tracker for each profile to diagnose problems
    • Handles current and historical issues
    • Ability to acknowlede or delete issues when resolved
  • GUI access to the internal asset database
    • Search as you type filtering
    • Pinning (force assets to be scanned regardless of perceived change)
    • Selective / manual queueing of assets for testing
  • Ability to include manual / static assets in the scan (in the WP tree but unmanaged by WP)
  • Ability to exclude specific files and folders
  • Setup Wizard is included for a guided profile creation

The Technology

  • The Plugin presents as a WordPress Admin / plugin page
  • Backend connections are made over websockets using PKI
  • The crawler respects Robots.txt, (make sure the “MMSbot” agent is allowed on your site)
  • MMS Javascript runs in an isolated module and CSS “plays nice” with WordPress
  • Global CSS and theming is partitioned and user editable (if you feel the need …)
  • All of the front-end JS code and PHP is either GPL2 or MIT licensed
  • Backend-code is all based on the Orbit Framework (the framework and DB are all MIT licensed)
  • Orbit is a ‘real time’ framework, so the admin panel is 100% reactive.
    • Progress bar updates are typically “per percent” granularity
    • All statuses, totals, etc, are updated as they happen
    • Unless you’ve hit a but, there is no mileage in reloading the MMS plugin page
    • If you change your license information, it will change in real-time
    • If the crawler allocated to your site changes (perhaps due to a license upgrade) then the
      appriate version of the crawler UI will be uploaded “into” the page from the new
      crawler.

Screenshots

  • Screenshot of the main admin page

Categories

Get New Themes & Resources