Invalidating the cache
Invalidating the cache
For persistent caching, remote systems must invalidate the cache when necessary.
Front-Commerce provides several endpoints for it. They respond to GET or
POST requests and are secured with a token to be passed in a auth-token
header. The expected token must be configured with the
FRONT_COMMERCE_CACHE_API_TOKEN environment variable.
POST for batched invalidations
This is the recommended way to invalidate cache. It allows to invalidate several entries in one HTTP call which is more efficient.
- Endpoint:
/_cacheinvalidate all data from the scopes sent in the body - Body: list of cache invalidation descriptor with the following object keys
scope: shop code (for instance one store)key: loader key to invalidateid: single id to invalidate for thekeyloader (in the givenscope)
For each key of the invalidation descriptor, it is possible to define the value
"all" (reserved keyword) to invalidate every defined object. See the example
below.
[
{ scope: "default", key: "CatalogProduct", id: "VSK12" },
{ scope: "default", key: "all", id: "VSK13" },
{ scope: "all", key: "CatalogCategory", id: "42" },
{ scope: "default", key: "CmsPage", id: "all" },
];
GET for atomic invalidations
These endpoints were the first ones implemented in Front-Commerce. They are less efficient than batching invalidations, but may be more convenient for webhooks or simple scripts.
/_cache: invalidate all data in persistent cache/_cache/:scope: invalidate all data for a given scope (for instance one store)/_cache/:scope/:key: invalidate all data of a given loader (matching:key) for a given store/_cache/:scope/:key/:id: invalidate cached data for a single id of a given loader in a given store
Our Magento 2 and Magento 1 extensions handle cache invalidation by default, please refer to their respective documentations to learn how to add your own invalidation logic (for custom Magento entities).