Project Example 2: Your website requires a caching strategy to be designed and implemented

Example Cost: £2,500

You have a website that uses the Drupal CMS. It has been running for a couple of years now and in the early days everything was perfect, it performed well in search engines, you acquired many registered users and have a thriving website.

But over the last few months you have noticed a marked degradation in the performace of your website and your users are starting to complain that pages take too long to load in their browser.

What is probably happening here is that over time your user numbers have increased resulting in your webserver and database having to service a greater number of simultaneous connections. Since your server resources are finite it is struggling to keep up with its increased work load.

There are several options available:

Enable page caching via Drupal admin

This is dead simple to do, but is it a good idea? Your website has registered users. Does this mean that some content is seen by users with certain roles only? Are there menu options that should be hidden to users that do not have a specific role?

With simple page caching you will also find that any data previously updated in real time, such as page view counts, like counts (unless Javasctipt driven) etc will now become stale, only updating when pages fall out of the cache every few hours. This can cause a site that previously looked busy and always updating to look stale and without much interaction.

Buy More Server Resource

This can be a quick fix, but is it sustainable? If you are hoping to achieve long term success from your website, is your business still still viable if you have to factor in expanding your server farm periodically? It is not just the cost of the hardware but you will also need to invest in configuring your site to use multiple servers, plus you will need to manage each of those servers adding even more to your running costs.

At some point a successful operation will almost certainly need to expand server resources to support scaling. But in order to do so cost effectively we should start by ensuring that the software performs well under heavy load.

Authcache

The Authcache module allows you to cache different versions of pages for different user roles. It also allows to use techniques such as hole punching to load user specific data inside a cached page. This is more complex to setup than standard page caching, but the results can be dramatic.

Authcache is likely to provide the best solution to this example project, which is characterised by having registered users.