Guide to installing, setting up and using 007AJ Performance and Caching 1.0.1 for WordPress.
Requirements: WordPress 6.3 or newer and PHP 7.4 or newer. Multisite networks are not supported.
007aj-performance-caching-1.0.1.zip and click Install Now.advanced-cache.php, a host that already caches pages, a read-only wp-config.php, a multisite network), nothing is changed and you are told why.X-AJPC-Cache: the first visit is MISS, the next is HIT.wp-content/ajpc-safe-mode.flag (or add define( 'AJPC_SAFE_MODE', true ); to wp-config.php) and everything switches off on the next page load.advanced-cache.php drop-in, with a cache lifetime you set. An optional separate cache for phones and tablets is off by default.utm_ are ignored), the REST API, wp-admin, AJAX and feeds..htaccess on Apache and LiteSpeed (with a backup). For nginx, copy the snippet shown on the Tools tab; the plugin never writes nginx files.wp-config.php and .htaccess is made before each edit. Edits sit between BEGIN AJPC / END AJPC markers, are syntax-checked, and are verified by asking your own site for a page. If it does not answer normally, everything is rolled back automatically.advanced-cache.php from another plugin or host is never overwritten.Everything on the Optimize tab is off until you choose. Safe minifies HTML, CSS and JavaScript and removes emoji scripts. Balanced adds deferred JavaScript, lazy-loaded images and iframes, and query strings removed from asset addresses. Each preset can be undone with one click, and Turn all optimizations off is always on the same screen.
wp-content/cache/ajpc-assets/. Your theme and plugin files are never edited.?ajpc-off=1 to any address to see the page without optimizations. The X-AJPC-Opt header shows what was done.On the Advanced speed tab. Every option is off until you turn it on, and all of them are skipped for logged-in users, the admin area, page-builder editors, previews, feeds, REST and AJAX.
font-display: swap.wp-content/cache/ajpc-assets/fonts/ and serves them from your site. See External Services.wp-content/ajpc-backups/images/. Restore original puts it back byte for byte, for one image or all. A file is replaced only if the new one is smaller and passed a check.<picture> markup that serves AVIF/WebP for every image on the page, and optional server rules for Apache/LiteSpeed (with backup and live check) and an nginx snippet.On the Database tab you pick what to remove: post revisions, auto-drafts, posts and pages in the trash, comments in the trash, spam comments, expired transients, orphaned post meta and orphaned comment meta. Press Count first: a dry run that changes nothing. Then tick the kinds, confirm that you have a database backup, and press Delete.
Revisions, auto-drafts, trashed posts, trashed comments and spam are removed only when older than the number of days you set (revisions and auto-drafts: at least 1 day). Published content, approved and pending comments, the Media Library and private content types are never touched.
A schedule (daily or weekly) removes only the kinds you tick and only items older than the days you set; the last 10 runs are logged. It is off until you switch it on and tick at least one kind. Table optimizing runs OPTIMIZE TABLE on this site's tables that have at least 1 MB and 5% unused space, by button or on the schedule. Scheduled deletions cannot be undone either.
Points the addresses of static files at the CDN address you enter. Default file types: jpg, jpeg, png, gif, webp, avif, svg, ico, css, js, woff, woff2, ttf, otf, eot, from the folders wp-content and wp-includes; you can edit the lists of folders, file types and exclusions. It rewrites images, srcset, video and audio, stylesheet and preload links, classic script addresses and url() values in inline styles. Links to pages, text inside scripts, module scripts, scripts or stylesheets with an integrity hash and the contents of CSS files are not changed. The admin area, previews and page-builder editors always get the normal addresses. Your CDN must fetch the files from your site under the same paths (a pull zone). The plugin never contacts the CDN.
When the plugin removes cached pages it can ask Cloudflare to drop its copies of the same addresses, or everything. You enter an API token with the permission Zone → Cache Purge → Purge for one zone. Use Test connection first.
When the plugin purges it can also call the purge function of Kinsta, WP Engine, SiteGround, Cloudways (through the Breeze plugin) or LiteSpeed Cache (or send the LiteSpeed purge header), and send HTTP PURGE requests to your own site's address for Varnish or nginx caches that accept them. Kinsta and Cloudways are purged only when the whole cache is emptied; the other hosts also purge single pages. These integrations follow the hosts' public documentation. Pantheon and Flywheel are detected and shown, not purged.
Installs a persistent object-cache drop-in for a Redis or Memcached server that you run. The plugin does not install either server and uses plain sockets, so no PHP extension is needed.
object-cache.php.ajpc-backup) and refuses to replace it unless you confirm.wp-content/ajpc-object-cache-config.php (file mode 0600, not in the database, because the drop-in loads before the database). Memcached is used without a login.Off until you switch it on. For the share of visits you choose, a script in the visitor's browser measures LCP, the longest interaction, CLS, FCP and TTFB and sends those five numbers and the window width to your own site once, when the visitor leaves the page. It is not loaded for logged-in users, and visitors whose browser sends “Do Not Track” or “Global Privacy Control” are not measured. Your site stores only daily counts per value range and per small, medium and large screen, for 90 days, with a history chart. No page address, IP address, browser name or identifier is stored and no cookie is set or read. Interaction time is approximated by the longest interaction and the 75th percentile is estimated from value ranges. Anyone can send numbers to the route, so the figures are an indication, not proof. Delete all collected numbers removes them.
By default the plugin collects no visitor data, sets no cookies and stores no IP addresses. Cached pages are stored only for visitors who are not logged in and have no cart, comment or password cookie.
For logged-in administrators it keeps a “notice dismissed” flag and short-lived result messages linked to their user ID. WordPress's Export Personal Data and Erase Personal Data tools include and remove them. The plugin adds suggested text under Settings → Privacy → Policy Guide that covers the services in section 17, the settings file for the object cache and Web Vitals.
Stored in your database: settings and the Cloudflare API token (not autoloaded, never shown again; deleted with “Remove token and settings” or when you delete the plugin with the data option ticked). Optimized files are under wp-content/cache/ajpc-assets/.
Deactivate: removes the drop-in, the WP_CACHE line, the .htaccess rules and the cached pages, the object-cache drop-in (restoring any backed-up drop-in) and the optimized files. Your settings stay.
Delete: keeps your settings and backups unless you tick Also delete all settings and backups on the Page cache tab first (off by default). Image originals saved in wp-content/ajpc-backups/images/ are part of those backups.
The Setup check lists the reasons. Fix the item (for example deactivate the other cache plugin) and try again. Nothing was changed.
Press Undo or Turn all optimizations off on the Optimize tab, or add the script or page to the exclusions. If you cannot open wp-admin, create the empty file wp-content/ajpc-safe-mode.flag.
Press Restore original on the image in the Media Library, or Restore all originals on the Images tab. A file you edited after optimizing is never overwritten by a restore.
It needs the page cache to be on and Safe mode to be off, and it runs on WP-Cron. If WP-Cron is switched off on your site, use the Run one step now button or your own cron job.
Multisite is not supported. The plugin will not enable page caching on a network and the other features were written for single sites only.
Add it to the CDN exclusions or switch the rewrite off. Fonts requested from inside a CSS file keep their address, because CSS files are not rewritten.
WordPress keeps working. Check the server address and port and run the connection test again; the Object cache tab shows the state.
Switch off Critical CSS, or paste CSS for that page type in the box on the Advanced speed tab.
The plugin connects to an outside service only when you turn the matching feature on, and sends nothing until then.
| Service | Used for | What is sent and when | Terms and privacy |
|---|---|---|---|
Google Fonts (fonts.googleapis.com, fonts.gstatic.com), Google LLC | Hosting fonts locally, only if you turn on “Host Google Fonts locally” | Your server requests the font stylesheet and font files once per font address, in the background, with a standard browser identification text. Visitor data is not sent; the request comes from your server. A failed download is not retried for an hour. | Terms · Privacy |
Cloudflare API (api.cloudflare.com), Cloudflare, Inc. | Purging Cloudflare's copies, only after you save an API token and tick a purge option | Your API token (Authorization header), your Zone ID, and either a list of this site's page addresses (30 per request) or the instruction to purge everything; your site's domain name when it looks up the zone. When the plugin purges, when you press Test connection or the purge button. No visitor data. | Terms · Privacy |
Servers you run yourself are not outside services: the Redis or Memcached address you enter, HTTP PURGE requests to your own site's address, the setup self-check and the optional preload (your own pages). Nothing is sent to 007aj.com or anyone else by those. The plugin does not track visitors and sets no cookies.
Email admin@007aj.com. Please include the plugin version (shown under Plugins) and what you expected to happen.