For those that are familiar with my talks on performance, I often showed off a custom warmup script using powershell for Sitefinity sites. This tool worked great. You hooked it to an XML sitemap (like the one from Sitefinity’s Sitemap Generator) and then it ran through all of the pages. However, this tool had some fallbacks. Because it was just a script, it required manual setup into CI/CD pipelines. It required additional configuration for load balanced environments and Azure environments. But this tool paved the way for Sitefinity’s out-of-the-box warmup tool.
I was very excited when the product team included me on the development team for the Sitefinity warmup tool. This gave me the opportunity to make sure it was simple, but extensible. It allows you to add “plugins” which essentially allow you to integrate custom sources for URLs to warmup. Out of the box, we delivered a sitemap plugin which collects the URLs for all pages in the sitemap (for each site).
As of writing this, this default Sitemap plugin only supports the default language for each site. It will not crawl all languages within each site… Something to keep in mind.
This left out a good majority of content from the warmup process. News, blog posts, events, forums, dynamic content, etc. We could certainly write plugins for each type of content and support them that way. Instead, I’ve decided to write a plugin to hook into an XML sitemap (like we used to with the legacy warmup script). This gives us the ability to hook straight into the Sitemap Generator’s capabilities for collecting/crawling content.
Keep in mind that the Sitemap Generator runs off the content location service to determine the detail routes to use for each content item. This tool is often misunderstood or taken for granted, so I recommend reading up on it here: https://www.progress.com/documentation/sitefinity-cms/for-developers-locations-of-content-items
You can download this XML sitemap plugin from my git repository here: https://github.com/avisra/SitefinityXmlSitemapWarmupPlugin
Instructions for installing the plugin can be found here: