← Home

Drupal 8 Cache API examples cheat sheet

April 25, 2018

Here are some random useful snippets for dealing with caches in Drupal 8, just because I keep having to dig them up from the API.

I'll try to add more here as I go.

Set an expiring cache item

\Drupal::cache()->set('cache_key', 'cache_data', $expiration_timestamp);

Set a permanent cache item

\Drupal::cache()->set('cache_key', 'cache_data', CacheBackendInterface::CACHE_PERMANENT);

Set a permanent cache item with tags

\Drupal::cache()->set('cache_key', 'cache_data', CacheBackendInterface::CACHE_PERMANENT, array('tag_one', 'second_tag'));

Fetch an item from the cache

$cache = \Drupal::cache()->get('cache_key');
if (!empty($cache->data) {
  // Do something with $cache->data here.
}

(Note that in Drupal 8 you don't have to manually check to make sure the cache isn't expired, thanks to this issue)

Invalidate a cache item

\Drupal::cache()->invalidate('cache_key');

Invalidate multiple cache items

\Drupal::cache()->invalidateMultiple($array_of_cache_ids);

Invalidate specific cache tags

This one allows you to pass in an array of cache tags to invalidate manually.

use Drupal\Core\Cache\Cache;

Cache::invalidateTags(['config:block.block.YOURBLOCKID', 'config:YOURMODULE.YOURCONFIG', 'node:YOURNID']); 

Note that the invalidation functions also exist for deleting caches, by just replacing invalidate with delete.

Flush the entire site cache

This one is still the same as Drupal 7.

drupal_flush_all_caches();

The end!


Tags: drupal development 


← Home

Twitter / LinkedIn / GitHub / Drupal / Email