With Drupal 8, you can build websites that are complex and loaded with dynamic content. Drupal lets you extend its functionalities by adding as many features as you want and yet provide a great user-experience. This is what sets Drupal apart but it does take a hit on your website performance. A feature-rich Drupal website will make your website heavy and thus make your performance go downhill.
Whenever your users load your page or perform any actions on them, your poor database will have to be summoned and ordered to show results based on complicated calculations. A single call to a Drupal page can make anywhere between 50-100 database queries. This seriously slows down the performance of your website. What can be done instead is you store the data that has already been loaded/calculated once in a separate zone and then whenever that data is needed again, just render it from that zone. This process is called Caching and the zone is called a Cache. It’s almost like keeping some quick cash in your pocket so when you really need it, you don’t have to reach out all the way to your wallet every time!
The Cache API in Drupal 8 stores any kind of data that takes a longer time to be computed. You can either permanently store data in the cache or give it a storing time span. Any type of data can be stored with the Cache API.
Why Cache API?
When it comes to simple, brochure-type Drupal websites, you can use other built-in caching mechanisms provided by Drupal. Like page caching, block caching and even caching of views and panels. There are also other caching modules that you can integrate with your Drupal website like Memcache, Boost, Varnish, etc. However, for more complicated websites that need constant updating of information and have a bigger user-base, Drupal 8’s Cache API works best. How can caching help you?
- Caching helps in reducing the page load time as it is rendered from a previously saved copy of the page.
- Continuous calls to the database can take up a lot of CPU/RAM resources. Caching can help freeing some resources.
- When your page loads faster and the performance is better, visitors are going to be more engaged.
- Greatly helps in SEO as the crawlers are impressed with your website speed.
How does Drupal 8’s Cache API work?
With Drupal 8, the Cache API is now improved and easier to use. All the cached data is stored in the database by default. You can however configure it to be able to store the cached data in a different backend like Memcache or APCu.
So, as already mentioned, you can cache any part of your page in the Cache API and render it when the same page/function is called again. What basically happens is:
- First a cache object is requested. This initiates the whole caching process.
- A Cache Id is defined. This will identify your data that has to be cached.
- The Cache function is called (get()). It will check if the object already contains any cached data.
- If no data is found in the cache, the result can be computed and pushed into the cache (set()). In this function you can set the lifespan of your cached object.
In Drupal 8, Cached data can be stored in multiple bins. The new Render cache bin is supposed to improve the rendering performance. Cache tags are another new feature that can be used to identify the cached items across multiple bins.
You can also delete the data in the cache either permanently if the data is no longer useful or temporarily if the data can still be useful at some point. Website data can also be cached depending on certain contexts. Like the location/role etc. of the users logged in. So, every time the contexts match, the cache is rendered.