Magento full page cache warmer
If you’re running Magento and using a full page cache like Lesti FPC, once you have the FPC configured and working, you might consider warming the cache so all the pages load quick for your customers the first time they hit them.
wfpc relies on a sitemap.xml file; you can read how to generate one for your Magento site here. Once you have a sitemap generated (and an FPC configured), you’re good to hit the site with the cache warmer.
wfpc has two modes of operation, the first is test mode. This randomly selects 10 URLs from your sitemap to load. An example
./wfpc -t http://mymagentosite.com/sitemap.xml
You’ll see a fancy summary of your site’s performance
Finished testing your Magento site performance Total download time (in seconds) : 5.0269110202789 Total download time (formatted) : 0:0:5.026 Average page time (in milliseconds): 502.69110202789
Warming the FPC
To actually warm the FPC, use
-w as the first argument.
wfpc will fetch each URL listed in sitemap.xml synchronously. If you want to put a delay between requests, you can add a
-d=delay-seconds after the
-w argument. An example
./wfpc -w http://mymagentosite.com/sitemap.xml
With 1 second delay
./wfpc -w -d=1 http://mymagentosite.com/sitemap.xml
If you have a large site with a lot of URLs to warm, you might consider running
wfpc within a
FPC configuration tips
- Make sure you have a reasonably high TTL for your FPC. If your pages expire from the FPC quickly, there’s not much point to warming them all!
- If you’re using a memory-based store for your FPC like APC, Redis or Memcache, keep an eye on the usage of the store as your cache is warming. For example, if you have a large site you want to cache, you may overrun your cache storage limit if you’re not careful!
Notes of interest
- The script should run on Windows, but I haven’t tested it there. You’ll probably need to run it as
php wfpc args...in that case.
- The script relies upon a few things in PHP
- Filter extension
- SimpleXML extension
- allowurlfopen = 1
- The code is nothing to brag about, I put it together in a few hours for my own needs. If folks like it, I can clean it up.
- This script will actually work for any site that has a sitemap.xml file. If you have an FPC mechanism on a site running something other than Magento, you may still find the script useful!