Skip to content
Gaurav TiwariDocs

Upgrade GT Performance

Version 1.3.6 Updated October 27, 2026

Updates come from WordPress.org. Update the plugin the usual way, from Plugins or Dashboard > Updates, or with wp plugin update gt-performance. The full release history is in the changelog.

After an update that changes the plugin’s database tables, the first wp-admin page load or WP-CLI command upgrades them. Front-end requests never run the upgrade, so sign in to wp-admin once after updating.

Moving from the gauravtiwari.org build

Copies downloaded from the gauravtiwari.org store before the WordPress.org listing carry an Update URI: false header, so WordPress never offers them directory updates. Switch once:

  1. Download gt-performance.zip from WordPress.org.
  2. Go to Plugins > Add New Plugin > Upload Plugin, choose the ZIP, and click Replace current with uploaded.
  3. Open GT Performance once in wp-admin so any table upgrade runs, then confirm with wp gt-performance doctor.

The files are replaced in place under the same gt-performance folder, so settings, tables, and the cache carry over. The WordPress.org package has no licensing code, so the old license screen disappears. Updates arrive from WordPress.org from then on.

From 1.0.0 or earlier: read this first

Releases up to 1.0.0 installed a generated advanced-cache.php that hard-codes the list of runtime files it loads. Later releases moved those files. When the plugin files are replaced but that old drop-in is still on disk, it loads a class list that no longer matches and raises a fatal from wp-settings.php, before WordPress can catch it, so the front end and wp-admin go down together.

The safe order

Replace the drop-in first, then update. Either:


  • Run the repair script before updating: https://gist.github.com/wpgaurav/03d61d313df00b4127db92393ed74681
    php gt-performance-migrate.php /path/to/wordpress # dry run php gt-performance-migrate.php /path/to/wordpress --apply

  • Or delete wp-content/advanced-cache.php by hand, update, then reinstall the drop-in from the GT Performance Dashboard.

If you already updated and the site is down

rm wp-content/advanced-cache.php

That restores the site immediately. An absent drop-in just means no page cache. Then reinstall the drop-in from the Dashboard.

You can’t fix this with WP-CLI, because WP-CLI boots WordPress and hits the same fatal. It has to be the filesystem.

Renamed constants

Everything moved from GTP_ to GTPERF_ in 1.0.1, with no compatibility shim. If you set any of these in wp-config.php, rename them:

// before                          after
GTP_REDIS_HOST                  →  GTPERF_REDIS_HOST
GTP_CLOUDFLARE_API_TOKEN        →  GTPERF_CLOUDFLARE_API_TOKEN
GTP_XCLOUD_API_TOKEN            →  GTPERF_XCLOUD_API_TOKEN

The same applies to every other GTP_ constant. Constants Reference lists the ones read today. Settings saved in the dashboard need no action.

What is on disk now

Before 1.0.1Current
cache/gt-performance/config.phpconfig.json (authenticated, encrypted)
cache/gt-performance/redis-config.phpredis-config.json (authenticated, encrypted)
pages/**/<hash>.meta.php<hash>.meta.json
generated advanced-cache.phpcopied from the plugin’s dropins/ folder
tables wp_gtp_*wp_gtperf_*

Cached pages regenerate on their own. The repair script removes the leftovers.

Version history worth knowing

VersionWhy it matters
1.3.6On a site using xCloud Cloudflare Enterprise with xCloud’s automatic cache purge plugin installed, GT Performance starts purging Enterprise and pauses direct Cloudflare on its own; no setting changes. Run wp gt-performance cache purge once after updating so pages re-record their dependencies under the new long-listing rule. Post changes now purge page one of listings only; see Purging
1.2.0Existing settings keep working, and existing sites stay in Store pages mode. Open the new Setup tab once and press Verify to confirm a real cached response; until a verification passes, the Dashboard points to Setup. Unused CSS is rebuilt for every page, because builds from 1.1.x are not reused (they could drop block themes’ fluid font sizes). The Cloudflare rule written by earlier releases (ref gt-performance-free-html-cache) is adopted by the site whose hostname it names and keeps its ref; new rules get a per-hostname ref. A full Cloudflare purge now purges this site’s hostnames instead of the whole zone, and settings saves purge only when a setting that reaches cached pages changed. Deactivation now deletes this site’s Cloudflare rule and empties the page store. Translations can be made from languages/gt-performance.pot
1.1.1Purge once after updating (wp gt-performance cache purge or Purge GT cache): pages cached earlier are served without the security headers set in PHP (CSP, HSTS, X-Robots-Tag and the rest) until they are rebuilt, and without the new YouTube preview. The drop-in now honors GTPERF_SAFE_MODE. wp gt-performance database run now keeps Scheduled revisions to retain (add --all-revisions for the old behavior), and doctor and health exit 1 when a check fails, so review scripts and server crons that call them
1.1.0Sign in to wp-admin (or run any WP-CLI command) after updating so the table upgrade runs. The Cache tab is now Page Cache, and CSS Status, Object Cache, Database, and AI & MCP tabs were added.
1.0.14Click Connect/sync Cloudflare on the Cloudflare tab once, so the managed Cache Rule allows the plugin’s own purge requests. Unrelated Cloudflare rules are preserved.
1.0.13Runtime configuration became authenticated, encrypted JSON, and both drop-ins were migrated to read it. Legacy configuration files are removed after migration.
1.0.11JavaScript minification stopped writing JavaScript files. Results are stored in WordPress and delivered through signed URLs.
1.0.8Activation stops on multisite. The WordPress revision limit control was removed. Cloudflare edge lifetime respects the origin’s Cache-Control by default. Review Optimization and Cloudflare settings after updating across this version.
1.0.5Uninstall removes the cache directory when data removal is enabled
1.0.4Upgrade compatibility code removed. From 1.0.0 or earlier, replace the drop-in first (see above).
1.0.2Fixed every admin button returning a blank page on 1.0.1
1.0.1Configuration and metadata became inert JSON; the drop-in became a copied file; GTP_ became GTPERF_

If you’re on 1.0.1, update. Its admin controls don’t work.

Share

Was this helpful?

Still stuck? Open a support ticket