Borrar caché del componente y de GraphQL clear-cache
Este documento proporciona una guía completa sobre la activación y verificación de la función clear-cache en AEM CIF.
Habilitar la función Borrar caché en la configuración de CIF enable-clear-cache
De forma predeterminada, la función de borrado de caché está desactivada en la configuración de CIF. Para habilitarlo, debe agregar lo siguiente a sus proyectos correspondientes:
-
Habilite el servlet
/bin/cif/invalidate-cache, que le ayuda a activar la API de borrar caché con sus solicitudes correspondientes agregando la configuracióncom.adobe.cq.cif.cacheinvalidation.internal.InvalidateCacheNotificationImpl.cfg.jsonen su proyecto como se muestra aquí.note note NOTE La configuración solo debe habilitarse para las instancias de autor. -
Habilite la escucha para borrar la caché de cada instancia de AEM (publicación y autor) agregando la configuración de
com.adobe.cq.commerce.core.cacheinvalidation.internal.InvalidateCacheSupport.cfg.jsonen su proyecto como se muestra aquí.-
La configuración debe habilitarse tanto para instancias de autor como de publicación.
-
Habilitar la caché de Dispatcher (opcional): puede habilitar la configuración Borrar caché de Dispatcher estableciendo la propiedad
enableDispatcherCacheInvalidationen true en la configuración anterior. Esto proporciona funcionalidad para borrar la caché de Dispatcher.note note NOTE Esto solo funciona con instancias de publicación. -
Además, asegúrese de proporcionar el patrón correspondiente que se adapte a su producto, categoría y página de CMS debe añadirse al archivo de configuración anterior para eliminarlo de la caché de Dispatcher.
-
-
Para mejorar el rendimiento de las consultas SQL para encontrar la página correspondiente relacionada con el producto y la categoría, agregue el índice correspondiente en el proyecto (recomendado). Para obtener más información, vea cifCacheInvalidationSupport.
Verificación de la función Borrar caché verify-clear-cache
Para comprobar que todo está configurado correctamente:
- Almacene en déclencheur el servlet correspondiente en la instancia de autor AEM, por ejemplo http://localhost:4502/bin/cif/invalidate-cache, y debería obtener una respuesta HTTP 200.
- Compruebe que se ha creado un nodo en la siguiente ruta de acceso en instancias de autor:
/var/cif/cacheinvalidation. El nombre del nodo sigue este patrón:cmd_{{timestamp}}. - Compruebe que se ha creado el mismo nodo en cada instancia de publicación.
Ahora, para comprobar si las cachés se están borrando correctamente:
-
Navegue hasta las páginas PLP y PDP correspondientes.
-
Actualice el nombre de un producto o categoría en el motor de comercio. Los cambios no se reflejan en AEM inmediatamente en función de las configuraciones de caché.
-
Almacene en déclencheur la API de servlet como se muestra aquí:
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 todo va bien, los nuevos cambios se reflejan en cada instancia. Si los cambios no están visibles en la instancia de publicación, intente acceder a las páginas PLP y PDP relevantes en una ventana privada o de incógnito del explorador.
Borrar API de invalidación de caché clear-cache-api
Esta es la API que debe almacenar en déclencheur siempre que desee borrar la caché de los datos relacionados con el comercio de AEM.
Tipo de solicitud: POST
Encabezados headers
Content-Typeapplication/jsonAuthorizationCarga útil payload
La siguiente tabla muestra los atributos existentes que la función proporciona de forma predeterminada. Estas propiedades de InvalidateType deben proporcionarse en combinación con un atributo obligatorio (como storePath).
invalidateTypeproductSkusBorre la caché de la memoria interna mediante el siguiente patrón:"\"sku\":\\s*\""
Dispatcher
- Borre la caché de la página PDP de los SKU correspondientes
- Borrar caché de la página de categorías correspondiente en la que existe(según la respuesta de graphql de commerce)
- Borre la caché en función de la siguiente consulta:
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')))
categoryUidsBorre la caché de la memoria interna mediante el siguiente patrón:"\"uid\"\\s*:\\s*\\{\"id\"\\s*:\\s*\""
Dispatcher
- Borre la memoria caché de las páginas de categorías para los datos correspondientes (incluida su página de categoría secundaria)
- Borrar todas las páginas de PDP que tengan las categorías correspondientes
- Borre la caché en función de la siguiente consulta:
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')))
regexPatternscacheNamesinvalidateAllEsta tabla muestra la propiedad obligatoria que debe pasarse en cada llamada de API:
storePath/content/venia/us/en como referencia con un proyecto de venia).invalidateType.Ejemplo de solicitud de 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"
}'
Extensibilidad clear-cache-extensibility
Esta función no solo ofrece su funcionalidad principal, sino que también ofrece extensibilidad, lo que permite a los desarrolladores desarrollarla y personalizarla según sea necesario.
Ampliación del atributo existente existing-attribute
En los casos en que sea necesario borrar la caché que actualmente no están cubiertos por la funcionalidad basada en atributos existente (como categoryUids), puede hacer referencia a este archivo de referencia para agregar nuevos patrones y definir invalidatePaths adicionales que deben borrarse de la caché más allá de lo que administra la implementación actual.
Añadir nuevo atributo personalizado new-custom-attribute
Si, por ejemplo, no desea utilizar el atributo existente para borrar la caché, tiene la flexibilidad de crear su propio atributo y definir su funcionalidad correspondiente.
-
Si solo necesita borrar la memoria caché de la memoria interna de AEM (la respuesta de graphql), debe seguir esta referencia.
-
Si necesita borrar la caché de la memoria interna y de la caché de Dispatcher, debe seguir esta referencia.
note note NOTE Puede omitir la caché de borrado interna devolviendo nullpara el métodogetPatterns().