Component & GraphQL Clear Cache clear-cache
Este documento fornece um guia abrangente sobre como ativar e verificar o recurso de cache limpo no AEM CIF.
Ativação do recurso Limpar cache na configuração do CIF enable-clear-cache
Por padrão, o recurso de cache limpo é desativado na configuração do CIF. Para ativá-lo, é necessário adicionar o seguinte aos projetos correspondentes:
-
Habilite o servlet
/bin/cif/invalidate-cacheque ajuda a acionar a API clear-cache com suas solicitações correspondentes adicionando a configuraçãocom.adobe.cq.cif.cacheinvalidation.internal.InvalidateCacheNotificationImpl.cfg.jsonno projeto, como mostrado aqui.note note NOTE A configuração precisa ser ativada somente para as instâncias do autor. -
Habilite o ouvinte a limpar o cache de cada instância do AEM (publicar e criar) adicionando a configuração
com.adobe.cq.commerce.core.cacheinvalidation.internal.InvalidateCacheSupport.cfg.jsonno seu projeto, como mostrado aqui.-
A configuração deve ser ativada para as instâncias do autor e de publicação.
-
Habilitar o cache do Dispatcher (Opcional): é possível habilitar a configuração limpar cache do dispatcher definindo a propriedade
enableDispatcherCacheInvalidationcomo true na configuração acima. Isso fornece funcionalidade para limpar o cache do dispatcher.note note NOTE Isso só funciona com instâncias de publicação. -
Além disso, certifique-se de fornecer o padrão correspondente que se adapta às necessidades de produto, categoria e página do CMS ao arquivo de configuração acima para removê-lo do cache do dispatcher.
-
-
Para melhorar o desempenho das consultas SQL para encontrar a página correspondente relacionada ao produto e à categoria, adicione o índice correspondente em seu projeto (recomendado). Para obter mais informações, consulte cifCacheInvalidationSupport.
Verificando o Recurso Limpar Cache verify-clear-cache
Para verificar se tudo está configurado corretamente:
- Acione o servlet correspondente para a Instância de Autor do AEM, por exemplo http://localhost:4502/bin/cif/invalidate-cache, e você deve obter uma resposta HTTP 200.
- Verifique se um nó foi criado no seguinte caminho nas instâncias do autor:
/var/cif/cacheinvalidation. O nome do nó segue este padrão:cmd_{{timestamp}}. - Verifique se o mesmo nó foi criado em cada instância de publicação.
Agora, para verificar se os caches estão sendo limpos corretamente:
-
Navegue até as páginas PLP e PDP correspondentes.
-
Atualize um nome de produto ou categoria no mecanismo de comércio. As alterações não são refletidas no AEM imediatamente com base nas configurações de cache.
-
Acione a API do servlet conforme mostrado aqui:
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. }'
Se tudo correr bem, as novas mudanças serão refletidas em todas as instâncias. Se as alterações não estiverem visíveis na instância de publicação, tente acessar as páginas PLP e PDP relevantes em uma janela do navegador privada/incógnita.
Limpar API de invalidação de cache clear-cache-api
Essa é a API que você precisa acionar sempre que quiser limpar o cache de dados relacionados ao comércio do AEM.
Tipo de Solicitação: POST
Cabeçalhos headers
Content-Typeapplication/jsonAuthorizationConteúdo payload
A tabela a seguir mostra os atributos existentes que o recurso está fornecendo prontos para uso. Essas propriedades InvalidateType precisam ser fornecidas em combinação com o atributo obrigatório (como storePath).
invalidateTypeproductSkusLimpar o cache da memória interna usando o seguinte padrão:"\"sku\":\\s*\""
Dispatcher
- Limpar o cache de página PDP dos SKUs correspondentes
- Limpar o cache da página de categorias correspondente na qual eles existem (com base na resposta do graphql do comércio)
- Limpar cache com base na seguinte 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')))
categoryUidsLimpar o cache da memória interna usando o seguinte padrão:"\"uid\"\\s*:\\s*\\{\"id\"\\s*:\\s*\""
Dispatcher
- Limpar o cache de páginas de categoria para os dados correspondentes (incluindo sua página de categoria secundária)
- Limpar todas as páginas PDP que têm as categorias correspondentes
- Limpar cache com base na seguinte 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 tabela mostra a propriedade obrigatória que precisa ser passada em cada chamada de API:
storePath/content/venia/us/en como referência com o projeto venia).invalidateType.Solicitação de API de exemplo 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"
}'
Extensibilidade clear-cache-extensibility
Esse recurso não só fornece sua funcionalidade principal, como também oferece extensibilidade, permitindo que os desenvolvedores criem e personalizem ainda mais, conforme necessário.
Extensão do atributo existente existing-attribute
Nos casos em que o cache precisa ser limpo e que não estão cobertos atualmente pela funcionalidade baseada em atributos existente (como categoryUids), você pode consultar este arquivo de referência para adicionar novos padrões e definir invalidatePaths adicionais que devem ser limpos do cache além do que a implementação atual lida.
Adicionar novo atributo personalizado new-custom-attribute
Se, por exemplo, você não quiser usar o atributo existente para limpar o cache, terá a flexibilidade de criar seu próprio atributo e definir sua funcionalidade correspondente.
-
Se você precisar apenas limpar o cache da memória interna do AEM (a resposta graphql), será necessário seguir esta referência.
-
Se você precisar limpar o cache da memória interna e do cache do Dispatcher, siga esta referência.
note note NOTE Você pode ignorar a limpeza interna do cache retornando nullpara o métodogetPatterns().