Skip to content

Latest commit

 

History

History
113 lines (68 loc) · 3.19 KB

cache-manager.rst

File metadata and controls

113 lines (68 loc) · 3.19 KB

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.

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

invalidatePath()

Important

Make sure to :ref:`configure your proxy <foshttpcache:proxy-configuration>` for purging first.

Invalidate a path:

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

Note

The flush() method is explained :ref:`below <flushing>`.

Invalidate a URL:

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

Invalidate a route:

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

Invalidate a :ref:`regular expression <foshttpcache:invalidate regex>`:

$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()

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 :doc:`ResponseTagger </features/tagging>`.

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();