Warm Cache


Crawls your website-pages based on any XML sitemap. If you have a caching plugin this will keep your cache warm.
Speeds up your site.
Compatible with following elements: < sitemap > < url >
All urls in your sitemap will be visited by the plugin to keep the cache up to date.
Will show average page load times and pages visited.

Needs google XML sitemap to read the generated XML file.
Needs a cronjob (wget or curl) to call the plugin. You need to setup the cronjob yourself! (Or ask your sysadmin to help you).
* Coding by MijnPress.nl
* Crawl script idea by http://blogs.tech-recipes.com/johnny/2006/09/17/handling-the-digg-effect-with-wordpress-caching/


  1. Upload directory warm-cache to the /wp-content/plugins/ directory
  2. Activate the plugin through the ‘Plugins’ menu in WordPress.
  3. Visit Plugins menu to view your Warm cache options.
  4. Run a cronjob. See the menu for the cronjob URL.
    Run it as often as you like, preferably more often then your
    page cache expiration time.
    Example: Page cache expiration = 1 hour, so set your cronjob at 30 minutes.

    Set it higher when you have lots of pages


I have multiple (language / domain) sitemaps, but I can only add one sitemap!

Use a sitemap index, pointing to all your (custom/sub)-sitemaps. Only add the sitemap main index file to the plugin

How to run a cronjob?

Ask your webhost how to set up a get call using wget or curl. See Installation for instructions howmany times you should call the cronjob.

The plugin shows an error, it cannot read the XML sitemap

The fact that you are able to “see” the XML in your browser does not guarantee that PHP is able to read it too.

Consult your host about this, if that fails.


Sucuri / Audit log notifies about new posts beeing created

We use the hidden post type warmcache to store statistics. We also remove them upon each crawl.
Feel free to ignore creation of posts with warmcache.
See https://wordpress.org/support/topic/29-september-2016-update-causing-constant-post-update-notifications-from-secur/

I have set up the cronjob but the stats table on the plugin page remains empty.

If you have object caching such as W3 total cache, the statistics cannot be read.
A help topic about this is placed on the support forums.
Note that the script is crawling your XML file (check your webhosts access log), but you cannot see the statistics.

How to override the 20 pages crawl limit

Set a define in your wp-config (at the top, newline, after <?php ) with name MP_WARM_CACHE_FILTER_LIMIT and value INTEGER

I have a lot of questions and I want support where can I go?

The support forums over here, drop me a tweet to notify me of your support topic over here.
I always check my tweets, so mention my name with @ramonfincken and your problem.


Constant warm cache errors, no response from author

Keep getting the error:

A notice from plugin Warm-cache: Your configured sitemap url ( http://www.mydomainname.com/sitemap_index.xml ) is configured, but does not appear to contain an xml opening tag, or a combination of urlset or sitemap, I cannot crawl your pages. Please check your sitemap plugin to fix your currupt sitemap.

Even though site map is configured, resolution was to remove warm cache simply because author would not respond to the issue.

Read all 8 reviews

Contributors & Developers

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




Bugfix: No gzip compression in ob_start filter
Bugfix: Devision by zero fixed in wp-admin statistics page
Changed: Added lock transient to prevent multiple warm cache calls. You can now call the warm cache every minute 🙂
Added: Override of 20 pages crawl limit via define. See the FAQ on WordPress.org how to do that.


Bugfix: The crawl key was re-set on every view of the admin page
Changed: Caching of results of XML sitemap check is now active


Added: Staggered crawl, so if you have thousands of posts, the crawl will walk/slide over those posts in groups of 20 each
Changed: Deleted all transient options, in favour of custom post type warmcache storage


Added: Debug notices when a sitemap is incorrect


Needs re-work: Bugfix: Transients without expiration (if you have no external non-persistant storage your options table will grow), Props M. Bastian


Added: Toggle flush settings


Added: Transient check for correct syntax of sitemap
Added: Admin notices when sitemap is not present or currupt


Changed: Better handling of pre-checks
Changed: Changed API key change message


Added: Flush to prevent loadbalancer/proxy timeout see https://wordpress.org/support/topic/needs-flush-to-write-buffers-to-prevent-timeouts


Added: Sitemap url override
Changed: Info txt in plugin
Changed: Refresh random token
Added: Cron service link


Bugfix: Extra if/else for zero pages to fix x/0 errors. Thanks to khromov https://wordpress.org/support/topic/division-by-zero-2 https://wordpress.org/support/profile/khromov


Added: Support for sub-sitemaps using < sitemap > format (as used in Beta of Google XML sitemaps). Thanks to Pascal90.de!


Changed: Random password call as mentioned by swanzai https://wordpress.org/support/topic/plugin-warm-cache-how-to-call-this-plugin-correctly


First release