The Cache Manager

Use the CacheManager to explicitly invalidate or refresh paths, URLs, routes, tags or responses with specific headers.

By invalidating a piece of content, you tell your caching proxy to no longer serve it to clients. When next requested, the proxy will fetch a fresh copy from the backend application and serve that instead.

By refreshing a piece of content, a fresh copy will be fetched right away.

Note

These terms are explained in more detail in An Introduction to Cache Invalidation.

The cache manager is available in the Symfony DI container using autowiring with the FOS\HttpCacheBundle\CacheManager class.

New in version 2.3.2: Autowiring support has been added in version 2.3.2. In older versions of the bundle, you need to explicitly use the service name fos_http_cache.cache_manager.

invalidatePath()

Important

Make sure to configure your proxy for purging first.

Invalidate a path:

$cacheManager->invalidatePath('/users')->flush();

Note

The flush() method is explained below.

Invalidate a URL:

$cacheManager->invalidatePath('http://www.example.com/users');

Invalidate a route:

$cacheManager->invalidateRoute('user_details', array('id' => 123));

Invalidate a regular expression:

$cacheManager->invalidateRegex('.*', 'image/png', array('example.com'));

The cache manager offers a fluent interface:

$cacheManager
    ->invalidateRoute('villains_index')
    ->invalidatePath('/bad/guys')
    ->invalidateRoute('villain_details', array('name' => 'Jaws')
    ->invalidateRoute('villain_details', array('name' => 'Goldfinger')
    ->invalidateRoute('villain_details', array('name' => 'Dr. No')
;

refreshPath() and refreshRoute()

Note

Make sure to configure your proxy for purging first.

Refresh a path:

$cacheManager->refreshPath('/users');

Refresh a URL:

$cacheManager->refreshPath('http://www.example.com/users');

Refresh a Route:

$cacheManager->refreshRoute('user_details', array('id' => 123));

invalidateTags()

Invalidate cache tags:

$cacheManager->invalidateTags(array('some-tag', 'other-tag'));

Note

Marking a response with tags can be done through the ResponseTagger.

flush()

Internally, the invalidation requests are queued and only sent out to your HTTP proxy when the manager is flushed. The manager is flushed automatically at the right moment:

You can also flush the cache manager manually:

$cacheManager->flush();