• … it’s tricky to set up!

    You might have noticed that 80% of the reviews give 5 stars to this plugin. Aye, it well deserves them! And then there are a few who simply say “doesn’t work” or “does nothing” or “same error as reported 5 years ago” and just give one star. There is not much in-between! How come?

    The explanation is easy.

    WordPress users come in all forms and shapes, and that also means quite different levels of know-how. Many entry-level cache plugins are very easy to set up: install it, click a checkbox to “enable cache”, and in 90% of the cases, that’s all you need to do. Some give you a few options to further tweak your setup, but these are mostly optional and/or “advanced usage” for the very few that really need them.

    This is the case of the free, built-in cache plugins already being offered by many hosting providers. They are installed automatically when WordPress is installed. They are also automatically configured. The end-user doesn’t need to do much, and, in many cases, they’re not even aware that a cache plugin is being used — everything works transparently and effortlessly.

    Obviously, that level of simplicity comes with a catch: you can’t really optimise much in terms of caching. It’s a one-size-fits-all-but-probably-none situation. In many cases, turning off the hosting provider’s plugin and adding your own will give you the possibility of tweaking things further, beyond what an automatic configuration can do.

    And then there is the other extreme of the spectrum: W3 Total Cache. The cache plugin that has everything and does everything. You can precisely configure the most minute details of your whole caching framework (because, well, it doesn’t limit itself to caching pages — it does pretty much everything). W3 Total Cache goes even further, actively looking for “improvement” tools that it can use and which might be running on your server — and allows you to activate them. Selectively. So you can use a Redis cache for some things (such as, say, object cache) but let the page cache stay on disk; or write some rules to get some elements automatically sent to a CDN, while keeping others local. It does support Cloudflare, too (as well as many, many other providers). In fact, it would be hard to think of anything that W3TC does not support or doesn’t allow to be configured.

    So why isn’t everybody using it, if it’s that good?

    Well, W3TC is impossibly hard to configure. Or, rather, you can do it, but it will be a nightmare to “get it right”. You might be “overtweaking” your configuration (it happened to me all the time!) and, as a consequence, W3TC would even slow down your system. You can miss a crucial parameter and throw your site offline in a second. And sure, you can make a copy of all the configuration settings that you have carefully preserved over the years, hoping to avoid all the trouble the next time you configure another WP installation. Well, good luck with that. It’s highly likely that a different WP site will, well, require different configurations. Some WP sites have zero JavaScript, but complex CSS; others have minimalistic CSS, but very clever JavaScript tricks, such as partially loading bits of content instead of a full page. Tweaking W3TC for each of those scenarios can be completely different and may require you to dump your “favourite” configuration and just start from scratch again. Oh, and that’s until your end-user decides to switch themes and/or add new plugins. Then you have to do everything from scratch — again.

    Not everybody has that amount of free time, nor the enthusiasm and dedication required to keep W3TC operating smoothly. It’s simply too complex to configure and maintain. As a result, most sites using W3TC ae not as optimised as they could be.

    Enter Super Page Cache for Cloudflare.

    This plugin, in terms of complexity and the ability to fine-tune several performance parameters, is closer to W3TC and further away from the “generic” page cache plugin pre-installed by hosting providers. In other words: there is a lot to configure until you “get it right”. The “reasonable defaults” that it starts with are… well, reasonable, sure, in the sense that they will not blow up your website, but the performance enhancements will not be dramatic.

    That’s as it should be, because the heavy-duty work is not being done by WordPress, nor even by Super Page Cache for Cloudflare; indeed, most is being done on Cloudflare’s side. And this is the right way to do it! Super Page Cache for Cloudflare essentially prepares WordPress to correctly interface with Cloudflare and leverages on what Cloudflare already provides (for free) in order to seriously accelerate your website.

    In other words…

    There is a limit to how much you can tweak your website locally. The “best of the best” caching plugin cannot magically wave some metrics away. If you’re hosting in the US, but your clients connect from Europe, there is no way to tweak and fine-tune your caching plugin so that European users get faster access to your website. There is a limit to how fast data can be transferred between the two sides of the Atlantic — ultimately, the speed of light. You cannot get faster than that! So, at best, you can hope for a local optimal configuration: giving users near to your data centre the best experience possible, and, well, there is not much more you can do beyond that, right? There is no way to go faster than the speed of light (not on this universe, anyway).

    Well, the answer is that you can cheat.

    And that’s what Cloudflare essentially does: it doesn’t merely “cache your content”. Rather, it does so by making copies of your website’s cache to their 250+ data centres across the world. This means that European visitors will not connect to your website in the US. They will just connect to Cloudflare’s nearest data centre in Europe, and retrieve the cached pages from there instead. Since Cloudflare operates in so many different cities, there is a huge percentage of the world’s Internet population that gets local speeds to retrieve your website — as opposed to have to wait for data to patiently cross the Atlantic (twice… once for the request, once for the reply).

    It’s the equivalent of making copies of your website all over the world. But instead of paying hundreds of web hosting companies across the world to hold a local copy of your website — not to mention the management of this automatic replication every time a cache is flushed — you just use Cloudflare to do everything on your behalf. Automatically, in the background, effortlessly. And for free.

    Super Page Cache for Cloudflare is just the key to unlock that potential.

    Now, to be fair, when you sign up to Cloudflare, by default, it caches very little — some JavaScript, some CSS, and, with luck, a few static images. This is the “bare minimum”, or the least common denominator — it will certainly improve things a bit, but not that much. Cloudflare even has their own “official” WordPress plugin, which facilitates the two-way communication between WP and Cloudflare’s servers. Nevertheless, Cloudflare’s own plugin is not really fine-tuned to perfection. It also implements, by default, a “least common denominator” policy — and making sure that, when a WP author/editor publish an article and requires the cache to be cleared (“flushed”), this request is also forwarded to Cloudflare’s network. But “flushing caches” is just one of the hundreds of options given by WP caching plugins. Some plugins, such as W3TC or the WP Fastest Cache plugin, are already “Cloudflare-aware” and can effectively communicate with Cloudflare’s API. Most, however, cannot be bothered to be properly configured: they work, sure, but always using the “bare minimum” performance boost you get from a generic default configuration.

    As such, considering that there are way too many possible ways to configure WordPress itself — not to mention Cloudflare! — it’s rather obvious that none of that leads to a simple way to pre-generate a “one-size-fits-all” cache configuration.

    That said, Super Page Cache for Cloudflare is not one of those “one-size-fits-all” solutions, but a plugin with a very reasonable amount of case-by-case configuration, even for the most basic of scenarios. And that is, unfortunately, the reason why so many reviews say “nothing works” or “impossible to configure”. You need to be patient. This is not an entry-level plugin at all: it is a rather sophisticated way of tapping into Cloudflare’s caching potential.

    But configuring Super Page Cache for Cloudflare is just half the story. You need to configure Cloudflare as well. One doesn’t work without the other. And I have to say that learning to configure Cloudflare’s rule engine so that it works correctly for Super Page Cache for Cloudflare was truly an education: I didn’t realise how little I was actually using from Cloudflare’s free account.

    It’s not obvious, but once you register with Cloudflare for a free account (or a paid one!), by default, it does not cache most things. You get just CSS and JS caching by default — good if you have insanely huge CSS/JS files — but that’s pretty much it.

    Why? Well, Cloudflare originally would cache most things — including all static HTML retrieved from one’s own webserver, images and other media, and so forth. Unfortunately, this only worked so long as, on the Web server side, everything is properly prepared for Cloudflare to work well. What happened was that the vast majority of Cloudflare users (again, especially the free ones!) have no clue about how Cloudflare is configured, or why, or what it does. They have only heard that Cloudflare is great for protecting one’s site from remote attacks (true) and that it does some caching (also true). They assume (incorrectly) that there is nothing they need to change on their side. And that inevitably leads to problems — such as dynamic content, generated taking cookies into account, or assuming that certain headers were present, not displaying correctly. A common issue I had with a really basic WP cache plugin was that Cloudflare would sometimes show the mobile page for a desktop user and vice-versa — even though on the WordPress side of things these two cases ought to be handled separately. They were, but… they weren’t always detected based on their headers only. And sometimes Cloudflare would just blindingly serve the last version of the page they had cached, no matter who it was for (it was even possible to “leak” in this way pages requiring authentication…).

    Over the years, therefore, Cloudflare learned their lesson: stop assuming that people have flawlessly configured servers on their side. Instead, go for the bare minimum that will work even with the worst possible configuration, but which, at least, won’t “break things”. And let so-called “advanced power users” to tweak both configurations (on their local web server and on Cloudflare) to cache whatever can be cached — but with a knowledgeable human being making rational decisions and tinkering with the configuration, not with an “automated” procedure.

    Super Page Cache for Cloudflare does a neat job on the Web server’s side of things. It can be configured to prepare a ready-to-be-served page cache on disk which will be nicely used by Cloudflare, exactly in the way Cloudflare prefers such content to be received. Super Page Cache for Cloudflare, therefore, is all you need to properly “prepare” everything to be served by Cloudflare — but it means that each site will require its own distinct configuration. There will be common things, of course, but they will not be exactly the same under all circumstances. In my experience, there are certain plugin + theme configurations that will not work with Cloudflare (so all you can do is to water your plants while waiting for something to happen). Most will, but they will also need some human help to properly configure Cloudflare’s page rules.

    And ultimately there’s where the magic happens. By enabling the Cloudflare rule engine, and making sure that it understands the format that Super Page Cache for Cloudflare uses to write things to disk — and serves them from disk —?you can virtually put your whole website on Cloudflare’s cache and serve it from there. With a bit of tinkering, you can do it. But, again, it’s not easy to do so, no matter how “automated” your system is, even though Super Page Cache for Cloudflare includes some of the more obvious configurations that you need to deploy.

    And woe to any major upgrade, which might just scratch your existing configuration — and you have to start over again!

Viewing 1 replies (of 1 total)
  • Mike

    (@vinyljunky67)

    This is one of the most comprehensive plug-in comments I have ever come across. And, I agree with everything you have said, especially the woe of a major upgrade upsetting my Pagespeed results.

    In fact there was a WordPress version update yesterday and am nervous about checking my new page speed results!

    I do give this plug-in 5 out of 5

Viewing 1 replies (of 1 total)
  • You must be logged in to reply to this review.