Effacer le cache du composant et de GraphQL clear-cache
Ce document fournit un guide complet sur l’activation et la vérification de la fonctionnalité d’effacement du cache dans AEM CIF.
Activation de la fonction Effacer le cache dans la configuration de CIF enable-clear-cache
Par défaut, la fonction d’effacement du cache est désactivée dans la configuration de CIF. Pour l’activer, vous devez ajouter les éléments suivants à vos projets correspondants :
-
Activez le
/bin/cif/invalidate-cachede servlet qui vous permet de déclencher l’API clear-cache avec leurs requêtes correspondantes en ajoutant la configurationcom.adobe.cq.cif.cacheinvalidation.internal.InvalidateCacheNotificationImpl.cfg.jsondans votre projet comme illustré ici.note note NOTE La configuration doit être activée uniquement pour les instances de création. -
Activez le listener pour effacer le cache de chaque instance d’AEM (publication et création) en ajoutant la configuration
com.adobe.cq.commerce.core.cacheinvalidation.internal.InvalidateCacheSupport.cfg.jsondans votre projet, comme illustré ici.-
La configuration doit être activée pour les instances de création et de publication.
-
Activation du cache de Dispatcher (facultatif) : vous pouvez activer le paramètre Effacer le cache du Dispatcher en définissant la propriété
enableDispatcherCacheInvalidationsur true dans la configuration ci-dessus. Cette option permet d’effacer le cache du Dispatcher.note note NOTE Cela ne fonctionne qu’avec les instances de publication. -
Veillez également à indiquer le modèle correspondant qui convient à votre produit, à votre catégorie et à la page CMS qui doit être ajoutée au fichier de configuration ci-dessus pour le supprimer du cache du Dispatcher.
-
-
Pour améliorer les performances des requêtes SQL afin de trouver la page correspondante associée au produit et à la catégorie, ajoutez l’index correspondant dans votre projet (recommandé). Pour plus d’informations, voir cifCacheInvalidationSupport.
Vérification de la fonctionnalité Effacer le cache verify-clear-cache
Pour vérifier que tout est correctement configuré :
- Déclenchez le servlet correspondant à l’instance de création AEM, par exemple http://localhost:4502/bin/cif/invalidate-cache et vous devriez obtenir une réponse HTTP 200.
- Vérifiez qu’un nœud a été créé sous le chemin suivant dans les instances d’auteur :
/var/cif/cacheinvalidation. Le nom du nœud suit ce modèle :cmd_{{timestamp}}. - Vérifiez que le même nœud a été créé dans chaque instance de publication.
Maintenant, pour vérifier si les caches sont correctement effacés :
-
Accédez aux pages PLP et PDP correspondantes.
-
Mettez à jour un nom de produit ou de catégorie dans le moteur de commerce. Les modifications ne sont pas répercutées immédiatement dans AEM en fonction des configurations du cache.
-
Déclenchez l’API de servlet, comme illustré ici :
code language-none curl --location '{Author AEM Instance Url}/bin/cif/invalidate-cache' \ --header 'Content-Type: application/json' \ --header 'Authorization: ******' \ // Mandatory --header 'Cookie: private_content_version=0299c5e4368a1577a6f454a61370317b' \ --data '{ "productSkus": ["Sku1", "Sku2"], // Optional: Pass the corresponding sku which got updated. "categoryUids":["CategoryUid"], // Optional : Pass the corresponding category-uid which got updated. "storePath": "/content/venia/us/en", // Mandatory : Needs to be given to know for which site we are removing the clear cache. }'
Si tout se passe bien, les nouvelles modifications sont répercutées dans chaque instance. Si les modifications ne sont pas visibles sur l’instance de publication, essayez d’accéder aux pages appropriées du PLP et du PDP dans une fenêtre de navigateur privée/privée.
Effacer l’API d’invalidation du cache clear-cache-api
Il s’agit de l’API que vous devez déclencher chaque fois que vous souhaitez effacer du cache les données liées au commerce d’AEM.
Type de demande : POST
En-têtes headers
Content-Typeapplication/jsonAuthorizationPayload payload
Le tableau suivant présente les attributs existants prêts à l’emploi fournis par la fonctionnalité. Ces propriétés InvalidateType doivent être données en combinaison avec un attribut obligatoire (tel que storePath).
invalidateTypeproductSkusEffacez le cache de la mémoire interne à l'aide du motif suivant :"\"sku\":\\s*\""
Dispatcher
- Effacez le cache de page PDP des SKU correspondants.
- Effacer le cache de la page de catégories correspondante dans laquelle ils existent (en fonction de la réponse GraphQL de Commerce)
- Effacez le cache en fonction de la requête suivante :
SELECT content.[jcr:path] FROM [nt:unstructured] AS content<br>WHERE ISDESCENDANTNODE(content, '{storePath}')<br>AND ( (content.[product] IN ('sku1','sku2') AND content.[productType] = 'combinedSku')<br> OR (content.[selection] IN ('sku1','sku2') AND content.[selectionType] IN ('combinedSku', 'sku')))
categoryUidsEffacez le cache de la mémoire interne à l'aide du motif suivant :"\"uid\"\\s*:\\s*\\{\"id\"\\s*:\\s*\""
Dispatcher
- Effacez le cache des pages de catégorie pour les données correspondantes (y compris sa page de catégorie enfant).
- Effacer toutes les pages du PDP qui ont les catégories correspondantes
- Effacez le cache en fonction de la requête suivante :
SELECT content.[jcr:path] FROM [nt:unstructured] AS content<br>WHERE ISDESCENDANTNODE(content,'{storePath}')<br>AND ((content.[categoryId] in ('category1','category2')<br>AND content.[categoryIdType] in ('uid'))<br>OR (content.[category] in ('category1','category2') AND content.[categoryType] in ('uid')))
regexPatternscacheNamesinvalidateAllCe tableau indique la propriété obligatoire qui doit être transmise dans chaque appel API :
storePath/content/venia/us/en comme référence avec le projet Venia).invalidateType.Exemple de requête API sample-request
curl --location 'https://author-p10603-e145552-cmstg.adobeaemcloud.com/bin/cif/invalidate-cache' \
--header 'Content-Type: application/json' \
--header 'Authorization: ******' \
--header 'Cookie: private_content_version=0299c5e4368a1577a6f454a61370317b' \
--data '{
"productSkus": ["VP01", "VT10"], // This will clear cache for the corresponding pages related with mentioned skus.
"categoryUids":["Mjk="], // This will clear cache for the corresponding pages related with mentioned categories.
"regexPatterns":["\"uid\"\\s*:\\s*\\{\"id\"\\s*:\\s*\"(Mjk=)\"", "\"sku\":\\s*\"(VP02|VP03)\""],
"cacheNames": ["venia/components/commerce/product"], // If this been added then it will clear respective caches for the corresponding storepath
"storePath": "/content/venia/us/en"
}'
Extensibilité clear-cache-extensibility
Cette fonctionnalité offre non seulement ses fonctionnalités de base, mais également son extensibilité, ce qui permet aux développeurs de l’exploiter et de la personnaliser davantage selon les besoins.
Extension de l’attribut existant existing-attribute
Dans les cas où le cache doit être effacé, mais qui ne sont pas actuellement couverts par la fonctionnalité basée sur les attributs existante (comme categoryUids), vous pouvez vous reporter à ce fichier de référence pour ajouter de nouveaux modèles et définir des invalidatePaths supplémentaires qui doivent être effacés du cache au-delà de ce que gère l’implémentation actuelle.
Ajout d’un nouvel attribut personnalisé new-custom-attribute
Si, par exemple, vous ne souhaitez pas utiliser l’attribut existant pour effacer le cache, vous avez la possibilité de créer votre propre attribut et de définir sa fonctionnalité correspondante.
-
Si vous avez uniquement besoin d’effacer le cache de la mémoire interne d’AEM (la réponse graphql), vous devez suivre cette référence.
-
Si vous devez effacer le cache de la mémoire interne et du cache du Dispatcher, vous devez suivre cette référence.
note note NOTE Vous pouvez ignorer le cache d’effacement interne en renvoyant nullpour la méthodegetPatterns().