Cache Warmer

Plugin Banner

Cache Warmer

by TMM Technology

Download
Description

Visits website pages to warm (create) the cache if you have any caching solutions configured.

Settings

  • Configure cache warming entry points and the depth of the warming;
  • Add all public site posts as entry points;
  • Add entry point sites sitemaps as entry points;
  • Select which types of assets to load, with 4 checkboxes: scripts, styles, images, fonts;
  • Set custom URL params (?foo=bar);
  • Set custom user agent;
  • Set custom request headers;
  • Set custom cookies;
  • Set connection timeout;
  • Set speed limit (pages to visit per minute);
  • Autorun Interval: to run the warming each N minutes;
  • Exclude pages (by substring or regex);
  • Rewrite URLs to HTTPS;
  • Visit pages second time without custom URL params (if they are set);
  • Warm-up posts (on their publication and edit (Can be seen in Logs -> Triggered)):
    • Set custom posts warming interval.
  • Store warm-up queues in MySQL so scheduled work is safe across interchangeable web nodes.

Additional

  • Adds a graph to your dashboard with page load time before and after the warming (2 lines) per day.
  • Cleans up Action Scheduler log after itself (older than 30 days for failed actions, and older than 2 days for completed actions).

External services

  • Connect to paid service for warming from external global servers.

Run from code

  • Start: \Cache_Warmer\AJAX::start_warm_up( false );
  • Stop: \Cache_Warmer\AJAX::stop_warm_up( false );

Run from WP CLI

  • Start: wp cache-warmer start
  • Stop: wp cache-warmer stop

Required PHP extensions

  • json
  • simplexml (optional)

Bug reports / Questions / Suggestions

[email protected]

Great for small sites, do not use for WooCommercee sites

By tomtbdev on December 15, 2025

This plugin is a great concept and from other reviews appears to work well on small sites. However I reported an issue 6 weeks ago where the PHP error was getting hammered by this plugin (over 7gb in size) due to a huge query failing to cache-warmer-links-tree-leftovers in WP-Options

It appears from other support requests the developer has abandoned this plugin as there has been no response on other support requests too. Shame as it could be a brilliant plugin if the core issues was fixed

Summary, great for small sites – forget it it you’re running WooCommerce

May the performance be with you!

By arcticblue on August 28, 2025

This is a really good helper plugin. Thanks so much for the development. The only thing that doesn’t work is the activation of the plugin in a XAMPP environment. I think I would have to dig deeper into the code, to see, what the error with XAMPP meant.. But anyways.. on my shared hosting it worked out of the box and is a very helpfull utility. If I find the time, maybe I’ll fork it 🙂

Thanks again for this masterpiece! Love it.

This plugin is a godsend

By ikx94 on November 24, 2024

Perfect plugin, not much to change. Litespeed Cache is pretty bad without this, and incredible when paired with this. Also, I like it much more than even the official Litespeed crawler.

Perfect plugin

By rsmith4321 on October 29, 2024

I have been looking for a plugin like this for a long time. With Redis full page caching, they are only added to the cache on first load and then dropped after 4 hours in the cache. This is a really nicely made plugin that will preload these files into cache at regular intervals. It’s an amazing plugin.

Unbelievable how good this plugin is

By nemovich on October 1, 2024

I waisted so much time with other “top” plugins trying to fix preloading cache and then this plugin shows up and simply did the job. Masterful work! Thanks

Integrates with both Cloudflare and mod_cache – a real gem!

By p15h (prestonwordsworth) on September 25, 2024

This is a well thought-out plugin.

A notable feature is that the log shows these three headers: cf-cache-status, x-cache and X-WP-Super-Cache. Which means you’ll know at one glance the status of Cloudflare’s edge cache, httpd’s mod_cache disk cache, and, I suppose, the WP Super Cache plugin’s less efficient disk cache if that’s what you’re using.

Perfect for warming up cache

By fis2022 on July 24, 2024

Thank you for this plugin.

It is a lifesaver, when you need a reliable cache warming tool. In my installation the standard preload of WP Rocket didn’t work as expected. I tried to find a solution for months.

Cache warmer now reliable preloads all given sitemaps in a defined interval.

Fantastic plugin that really improved site performance and speed

By Dale Reardon (dalereardonmdm) on June 23, 2024

This plugin has dramatically helped my sites perform better and increase their speed and TTFB. Even with great hosting and really good caching setup (Cloudflare etc) you still have a speed issue when the pages of your site need to go to the cache for the first time. This plugin causes your site pages to be loaded into cache and hence visitors get a great experience. This plugin is even more useful for sites with smaller traffic as your caching solution needs refreshing regularly and you can set this plugin to refresh cache on a regular interval. The support has also been excellent as a plugin like this can have issues across many different hosting setups. Dale.

Simple yet super functional, great support!

By Denis (identiden) on February 27, 2024

Everything you need for warming/crawling/preloading your cache! Fast, simple, with all the options needed to make it functional for most websites (add user agents, header, interval, warm after page update, …). And lovely support that listens to the needs of the users.

Great alternative if your host has disabled the LSCache crawler on your Litespeed server.

Fantastic Plugin

By elementador on February 24, 2024

Came from “Automatic Cache Warmer” plugin, but that used so many resources during warm up that my whole website became unresponsive. Installed this plugin (cache warmer – names are almost the same) here, and no problem at all. Very easy install and settings, great work developers!

1.4.15 2026-11-03

  • Recover non-positive saved warm-up speed limits from the current site setting before processing. Preserve valid run limits, queued visits and metadata recovery backups.

1.4.14 2026-11-03

  • Automatically recover recognized truncated run metadata using current site settings only for missing fields. Preserve complete settings, queued URLs and an exact backup of the damaged data.

1.4.13 2026-11-03

  • Explain unsupported metadata recovery with bounded structural diagnostics, without exposing stored request configuration or changing the retained queue.

1.4.12 2026-11-03

  • Prevent large warm-up configurations from being truncated by widening metadata storage and rejecting failed JSON encoding or unsafe writes.
  • Add guarded administrator recovery for truncated request history, preserving the original metadata and all queued visits without resetting the warm-up.
  • Retain recovery backups during automatic cleanup and prevent incomplete request history from replacing a complete reusable crawl.
  • Fix timeout option declarations during uninstall when the plugin is inactive.

1.4.11 2026-11-03

  • Add administrator diagnostics for warm-up configuration size, checksum, JSON errors and database column capacity without exposing configuration contents.

1.4.10 2026-11-03

  • Restore the documented 15-second HTTP timeout for retained warm-ups with missing or zero timeouts, preserving valid configured limits and queued work.
  • Verify delayed responses and successful retries through the real WordPress HTTP transport while retaining failure history.

1.4.9 2026-11-03

  • Recover missing legacy warm-up start dates from the existing run identity without resetting queued visits.
  • Persist identity recovery before retrying so subsequent failures retain bounded backoff, including interrupted finalization.

1.4.8 2026-11-02

  • Preserve historical zero/empty behavior for retained warm-ups with missing or null numeric settings and discovery agents.
  • Add bounded, redacted active-run configuration diagnostics without exposing cookies, headers or user-agent values.

1.4.7 2026-11-02

  • Normalize legacy optional warm-up settings before requests and canonical or asset discovery, preserving queued URLs and configured values.
  • Keep interrupted work recoverable with delayed worker retries and preserve malformed metadata for investigation.
  • Report the active warm-up instead of historical scheduler failures, and keep progress refreshing during recovery.

1.4.6 2026-11-02

  • Fix queued warm-ups with missing or null optional request headers while preserving configured headers and pending visits.

1.4.5 2026-11-02

  • Fix queued warm-ups failing when optional cookie metadata is missing or null, while preserving configured cookies.
  • Recover missing warm-up list containers during database upgrades without deleting their logs; retain incomplete recovery data separately from runnable work.

1.4.4 2026-10-30

  • Fix large legacy queue upgrades exceeding the database packet limit by storing seed manifests in bounded chunks.
  • Preserve complete pending queues across interrupted transfers and verify their integrity before resuming.
  • Stop retrying non-collision SQL failures and reclaim seed chunks after successful publication.

1.4.3 2026-10-30

Bugfixes

  • Update bundled WP Plugins Core to 0.1.58 with bounded notification retries and recovery; notification fetching remains disabled in this plugin.

1.4.2 2026-10-29

Bugfixes

  • Recover a missing database table when the saved migration checkpoint is already ahead, preserving surviving tables and retry progress.
  • Keep the main administration page and migration diagnostics accessible while a database upgrade or status read is unavailable.

1.4.1 2026-10-13

Bugfixes

  • Preserve pending warm-up work and recovery state when queue discovery, persistence, or scheduler cleanup fails.
  • Update shared settings and scheduler recovery support to WP Plugins Core 0.1.57.

1.4.0 2026-08-17

Enhancements

  • Store active warming queues in indexed database rows instead of large serialized options.
  • Make warm-up processing recoverable across PHP requests and prioritize scheduled warming over post-triggered warming.
  • Add a unified Codeception and wp-browser regression suite covering queues, migrations, HTTP outcomes, content discovery, scheduling, external warming, post-triggered warming, reporting, options, and AJAX authorization.

Bugfixes

  • Prevent overlapping workers from processing the same queued page.
  • Retry failed pages once and preserve scheduled and post-triggered queues independently.
  • Isolate every post-triggered batch so repeated edits cannot suppress later warming requests.
  • Make manual cancellation compatible with strict SQL modes and resume independent triggered queues afterward.
  • Reconcile missing columns and indexes on legacy log tables.
  • Keep external-warmer logging compatible with the database-backed queue.
  • Correctly recognize extensionless pages inside dotted directory names.
  • Parse complete CSS @import URLs instead of truncating them to one character.
  • Record newly discovered failed URLs as failures when no pending queue row exists.

Security

  • Require administrator capability checks in addition to nonces for every plugin AJAX action.
  • Update Guzzle to the patched release covered by the current security advisories.

1.3.11 2026-07-15

Security

  • Update Guzzle dependencies to prevent URL credentials from reaching origin servers.

1.3.10 2026-07-03

Bugfixes

  • Fix “_load_textdomain_just_in_time was called incorrectly” notice by loading translations on the init hook (required since WP 6.7).

1.3.9 2026-06-25

Compatibility

  • Added support for WordPress 7.0.0.

1.3.8 2024-11-18

Bugfixes

  • Fix UI rendering bugs.

1.3.7 2024-11-02

Bugfixes

  • Fix interval scheduling issue.

1.3.6 2024-10-21

Enhancements

  • Add WP-CLI support.

1.3.5 2024-10-20

Bugfixes

  • Fix fatal error on plugin update.

1.3.4 2024-10-19

Enhancements

  • Add support for WP CLI.

Bugfixes

  • Fix scheduled intervals.

1.3.3 2024-10-05

Enhancements

  • Instead for checking for intervals in constructors on every page load, check for them only once on plugin activation. Add a button and other interval (which is scheduled in constructor) to fix any missing intervals.

1.3.2 2024-09-29

Bugfixes

  • Warming start bug fix.

1.3.1 2024-09-29

Enhancements

  • Add support for external warmer – simply for each page visit, and with the intervals.
  • Added functionality to start / stop the warming from code (or with WP CLI with “wp eval”).

Bugfixes

  • Fix the warming interval stuck bug.

1.3.0 2024-06-24

Enhancements

  • Speed up warmings (optimization).

Bugfixes

  • Fix stuck object cache bug.

1.2.5 2024-06-23

Bugfixes

  • Fix stuck object cache bug.

1.2.4 2024-06-23

Changes

  • Do not schedule notifications fetch action.

1.2.3 2024-06-05

Bugfixes

  • Fix Action Scheduler bug.

1.2.2 2024-05-26

Bugfixes

  • Fix Fatal Error with explode on Windows by using DIRECTORY_SEPARATOR constant.

1.2.1 2024-05-02

Enhancements

  • Use standard Action Scheduler interval.
  • Update WP-Plugins-Core.

1.2.0 2024-04-23

Bugfixes

  • Fix the unscheduled warming with empty data (which results in PHP Warnings).

1.1.9 2024-03-12

Bugfixes

  • Fix the “depth” setting.

1.1.8 2024-03-11

Bugfixes

  • Fix the sitemaps parsing (didn’t visit them at all previously).
  • Fix ID for “external warmer” setting fields.
  • Fix “speed limit” bug.

1.1.7 2024-02-28

Bugfixes

  • Fix settings import button color.
  • Fix a bug when the scheduling time is drifting.
  • Fix the wrong warming “Duration”.
  • Fix “speed limit” bug.

Enhancements

  • Warm sitemaps and posts first (with prio), and only then entry points.

1.1.6 2024-01-14

Bugfixes

  • Fix “Request: DOMDocument::loadHTML(): Argument #1 ($source) must not be empty”.

1.1.5 2024-01-13

Enhancements

  • Update default User-Agent to the newer version of Chrome.
  • Increase URL params limit from 5 to 50.
  • Add a setting to specify custom request headers.
  • Add a setting to visit pages second time without custom cookies (when they are set).
  • Improve canonicals logic, to add a log icon with the canonical to the warm-up log; and if ‘skip pages with warmed canonical’ setting is off, then also warm the canonical page immediately.

Bugfixes

  • Fix table cells style (overflow: auto for all).
  • Logs in the site’s timezone.
  • Fix a bug when resetting settings does not change posts warming enqueue.
  • Fix user-agent table width when no values are set.

1.1.4 2023-09-23

Bugfixes

  • Fix canonicals logic.
  • Do not untrailingslash all URLs, but keep them as they are.
  • Allow to specify “localhost” as entry points.
  • Fix URL column style (overflow: auto).

1.1.2 2023-09-16

Enhancements

  • Add an option to specify several User-Agents.
  • Dynamically escape regex characters when enabling regex. And de-escape on uncheck.
  • For headers-based requests classification, do not show 0, but instead show nothing; so that people could not misinterpret it as another request.
  • Add a setting to skip the pages with the warmed canonical.
  • Add optional “Comment” column to the warm log.
  • Change number of pages in batch size from 10 to 1 to increase the robustness.
  • Add a setting for logs retention time.
  • New menu layout.

Bugfixes

  • Make “Rewrite to HTTPS” to work for the “URL to warm” on page edit block, and for entry points pages exclusion.
  • Fix update_failed_to_retrieve_links() and update_retrieved_links() added links check, to not add duplicates.
  • Improve RegExes robustness by using “lazy” quantifiers, instead of the greedy ones.

1.0.54 2023-07-18

Enhancements

  • Use wp_options table instead of cache for the lock of migrations.
  • Set min PHP version to 7.4.

1.0.51 2023-07-16

Enhancements

  • Cleans up Action Scheduler log after itself (older than 30 days for failed actions, and older than 2 days for completed actions).
  • Added index to the table to make the post edit page open faster.
  • Entry points limit lifted.
  • Can specify homepage relative paths as entry points.
  • Add support for “html” files warming.
  • Add a notice when the plugin is being updated instead of blocking the whole logic.

Bugfixes

  • Fix table creation error.
  • Fix action scheduler scheduling (improve initialization check).
  • Fix a bug to not warm “mailto:” URLs, but only the ones that start from “http://” or “https://”.
  • Add checks in case wp_parse_url() is false.
  • Add Author metadata to the plugin main file.
  • Do not add URL params to files with ‘XML’ extensions.
  • Fix a bug when URL params to sitemap pages were not added.
  • Fix a bug when “sitemaps” setting was not reset.

1.0.44 2023-06-11

Bugfixes

  • Add pagination to blog posts.
  • Support pagination for plaintext URLs structure.

1.0.43 2023-06-08

Bugfixes

  • Fix URLs overlap over the post edit content box.

1.0.41 2023-06-07

Enhancements

  • Add pages support for taxonomies.
  • Better migration routine.

1.0.40 2023-06-07

Bugfixes

  • Add missing libraries.

1.0.38 2023-06-06

Bugfixes

  • Fix the plugin (didn’t start previously).

1.0.37 2023-06-06

Enhancements

  • Decrease plugin size from 8 MiB to 2.8 MiB by removing irrelevant files.

1.0.36 2023-06-03

Enhancements

  • Rename “Interval” tab to “Autorun Interval”.
  • Capitalize first letters of all tab words.
  • Add post URL, and with URL params (if presents) to the post edit block.
  • Add option to exclude pages by regex.

Bugfixes

  • Fix interval-based warming.

1.0.35 2023-05-15

Enhancements

1.0.34 2023-04-30

Bugfixes

  • Fixed error when the host was undefined.

1.0.25 2023-02-23

Enhancements

  • Check page load time pre warmer.
  • Add Varnish and Cloudfront support.

1.0.20 2023-02-15

Bugfixes

  • Redundant dashboard query deleted.

1.0.19 2023-02-14

Bugfixes

  • Min PHP version required downgraded to 5.6.20.

1.0.17 2023-02-08

Optimizations

  • Dashboard query to consider only the previous 30 days.

Bugfixes

  • Default sitemap priority changed from 0 to 0.5.
  • Add terms to the tree query fixed.

1.0.16 2023-02-08

Enhancements

  • Improved accuracy for server IP address detection.

1.0.15 2023-02-08

Bugfixes

  • Regexes fixed and improved (now work more accurately and catch more links).

1.0.11 2023-02-08

Enhancements

  • Consider priority for sitemaps.

1.0.10 2023-02-08

Enhancements

  • Optimized dashboard widget by using a faster query for the dashboard widget.

Bugfixes

  • Do not get empty afterload time for the dashboard widget.

1.0.9 2023-02-08

Enhancements

  • Add term links and archives to the posts also.

1.0.8 2023-02-05

Enhancements

  • Option to sitemaps of entry points as entry points

1.0.7 2023-02-04

Enhancements

  • Option to add all public site posts (of any type) as entry points.

Bugfixes

  • Batch size reduced from 10 to 1.

1.0.6 2023-02-02

Enhancements

  • Post warm details.

1.0.5 2023-02-02

Enhancements

  • Slow down when hit 429 or 500 error: first 2 times slower for 15 minutes from the previous avg speed, then 8 times slower, then pause for an hour.

Bugfixes

  • Speed limit is now working properly.

1.0.4 2023-01-30

Enhancements

  • Show a notification when a page is blocked by Cloudflare or other firewall (403, 502, 504 codes).

Bugfixes

  • Infinite loop during fake tree creation when the initial passed depth is 0.

1.0.3 2023-01-29

Enhancements

  • Changelog added.