Cache Warmer


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


  • 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.
  • Use object cache for tree storage, when it’s available.


  • 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.

Required PHP extensions

  • json
  • simplexml (optional)

Bug reports / Questions / Suggestions


25 January 2024
Thank you for this great plugin, works very well.
14 January 2024
Great plugin, keeps your site fast. Developer is very responsive to bugs and issues.
12 October 2023
This is a great plugin, and it works on shared host with LiteSpeed Cache plugin enabled. TLDR: If you use LiteSpeed cache, disable "Image WebP Replacement" till the module will include more options for request header set-up. However, there's a catch. If you use LiteSpeed WebP image replacement, then you should disable it, as the cache will not work on browser with WebP support, most browsers, and the page will re-cache at runtime. In order to handle this, the plugin should be capable to set the "accept:" header to "image/webp". This is not a plugin issue, but would be nice to add a feature for compatibility fix (let user add custom header in request) with this type of headers, as it will not cache for a live version of Chrome, for example, that supports WebP without these modifications.
21 September 2023
Great plugin with a lot of very useful options such as the choice of user agents, the research of pages with the sitemaps. The support is really amazing and very fast. And they take custom requests which makes it even better !
18 July 2023
Yeah, I can only say this is a great Plugin, you can build many preload scenarios with Cache Warmer. A great experience of your website speed in front of users. The developer is a talented programmer and knows how to listen. Always try to solve everyone’s problems. Thank you for giving away a great product for the community
Read all 9 reviews

Contributors and Developers

“Cache Warmer” is open source software. The following people have contributed to this plugin.


Translate “Cache Warmer” into your language.

Interested in development?

Browse the code, check out the SVN repository, or subscribe to the development log by RSS.

Change Log

1.1.6 2024-01-14


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

1.1.5 2024-01-13


  • 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.


  • 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


  • 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


  • 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.


  • 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


  • 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


  • 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.


  • 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


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

1.0.43 2023-06-08


  • Fix URLs overlap over the post edit content box.

1.0.41 2023-06-07


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

1.0.40 2023-06-07


  • Add missing libraries.

1.0.38 2023-06-06


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

1.0.37 2023-06-06


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

1.0.36 2023-06-03


  • 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.


  • Fix interval-based warming.

1.0.35 2023-05-15


1.0.34 2023-04-30


  • Fixed error when the host was undefined.

1.0.25 2023-02-23


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

1.0.20 2023-02-15


  • Redundant dashboard query deleted.

1.0.19 2023-02-14


  • Min PHP version required downgraded to 5.6.20.

1.0.17 2023-02-08


  • Dashboard query to consider only the previous 30 days.


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

1.0.16 2023-02-08


  • Improved accuracy for server IP address detection.

1.0.15 2023-02-08


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

1.0.11 2023-02-08


  • Consider priority for sitemaps.

1.0.10 2023-02-08


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


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

1.0.9 2023-02-08


  • Add term links and archives to the posts also.

1.0.8 2023-02-05


  • Option to sitemaps of entry points as entry points

1.0.7 2023-02-04


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


  • Batch size reduced from 10 to 1.

1.0.6 2023-02-02


  • Post warm details.

1.0.5 2023-02-02


  • 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.


  • Speed limit is now working properly.

1.0.4 2023-01-30


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


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

1.0.3 2023-01-29


  • Changelog added.