Cancella cache componente e GraphQL clear-cache
Questo documento fornisce una guida completa sull’abilitazione e la verifica della funzione di cancellazione della cache in AEM CIF.
Abilitazione della funzione di cancellazione della cache nella configurazione di CIF enable-clear-cache
Per impostazione predefinita, la funzione di cancellazione della cache è disabilitata nella configurazione di CIF. Per abilitarlo, devi aggiungere quanto segue ai progetti corrispondenti:
-
Abilita il servlet
/bin/cif/invalidate-cacheche ti consente di attivare l'API clear-cache con le richieste corrispondenti aggiungendo la configurazionecom.adobe.cq.cif.cacheinvalidation.internal.InvalidateCacheNotificationImpl.cfg.jsonnel progetto come mostrato qui.note note NOTE La configurazione deve essere abilitata solo per le istanze di authoring. -
Consenti al listener di cancellare la cache da ogni istanza di AEM (pubblicazione e authoring) aggiungendo la configurazione
com.adobe.cq.commerce.core.cacheinvalidation.internal.InvalidateCacheSupport.cfg.jsonnel progetto come mostrato qui.-
La configurazione deve essere abilitata sia per le istanze di authoring che per quelle di pubblicazione.
-
Abilitare la cache di Dispatcher (facoltativo): è possibile abilitare l'impostazione della cache di eliminazione del dispatcher impostando la proprietà
enableDispatcherCacheInvalidationsu true nella configurazione precedente. Questa funzione consente di cancellare la cache dal dispatcher.note note NOTE Questo funziona solo con le istanze di pubblicazione. -
Inoltre, assicurati di fornire il modello corrispondente che si adatta al tuo prodotto, categoria e pagina CMS che deve essere aggiunto al file di configurazione di cui sopra per rimuoverlo dalla cache del dispatcher.
-
-
Per migliorare le prestazioni delle query SQL per trovare la pagina corrispondente relativa al prodotto e alla categoria, aggiungi l’indice corrispondente nel progetto (scelta consigliata). Per ulteriori informazioni, vedere cifCacheInvalidationSupport.
Verifica della funzione di cancellazione della cache verify-clear-cache
Per verificare che tutto sia configurato correttamente:
- Attiva il servlet corrispondente nell'istanza di authoring di AEM, ad esempio http://localhost:4502/bin/cif/invalidate-cache. Riceverai una risposta HTTP 200.
- Verificare che un nodo sia stato creato nel percorso seguente nelle istanze di authoring:
/var/cif/cacheinvalidation. Il nome del nodo segue questo pattern:cmd_{{timestamp}}. - Verifica che lo stesso nodo sia stato creato in ogni istanza di pubblicazione.
Ora, per verificare se le cache vengono cancellate correttamente:
-
Passare alle pagine PLP e PDP corrispondenti.
-
Aggiorna il nome di un prodotto o di una categoria nel motore di commerce. Le modifiche non vengono riportate in AEM immediatamente in base alle configurazioni della cache.
-
Attiva l’API del servlet, come illustrato di seguito:
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 tutto va bene, le nuove modifiche si riflettono in ogni istanza. Se le modifiche non sono visibili nell’istanza di pubblicazione, prova ad accedere alle pagine PLP e PDP pertinenti in una finestra del browser privata/in incognito.
Cancella API di annullamento validità cache clear-cache-api
Questa è l’API che devi attivare ogni volta che desideri cancellare la cache dei dati relativi a commerce da AEM.
Tipo di richiesta: POST
Intestazioni headers
Content-Typeapplication/jsonAuthorizationPayload payload
Nella tabella seguente sono illustrati gli attributi esistenti forniti dalla feature. Queste proprietà InvalidateType devono essere fornite in combinazione con l'attributo obbligatorio (ad esempio storePath).
invalidateTypeproductSkusCancella la cache dalla memoria interna utilizzando il seguente pattern:"\"sku\":\\s*\""
Dispatcher
- Cancella la cache delle pagine PDP degli SKU corrispondenti
- Cancella la cache della pagina categorie corrispondente in cui esistono (in base alla risposta graphql da commerce)
- Cancella la cache in base alla seguente query:
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')))
categoryUidsCancella la cache dalla memoria interna utilizzando il seguente pattern:"\"uid\"\\s*:\\s*\\{\"id\"\\s*:\\s*\""
Dispatcher
- Cancella la cache delle pagine delle categorie per i dati corrispondenti (inclusa la pagina delle categorie figlio)
- Cancella tutte le pagine PDP con le categorie corrispondenti
- Cancella la cache in base alla seguente query:
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')))
regexPatternscacheNamesinvalidateAllQuesta tabella mostra la proprietà obbligatoria che deve essere passata in ogni chiamata API:
storePath/content/venia/us/en come riferimento con il progetto Venia).invalidateType.Richiesta API di esempio 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"
}'
Estensibilità clear-cache-extensibility
Questa funzione offre non solo le funzionalità di base, ma anche l’estensibilità, consentendo agli sviluppatori di sfruttarla e personalizzarla ulteriormente in base alle esigenze.
Estensione dell’attributo esistente existing-attribute
Nei casi in cui è necessario cancellare la cache che al momento non sono coperti dalla funzionalità esistente basata su attributi (ad esempio categoryUids), puoi fare riferimento a questo file di riferimento per aggiungere nuovi modelli e definire ulteriori invalidatePaths che devono essere cancellati dalla cache oltre a ciò che gestisce l'implementazione corrente.
Aggiunta di un nuovo attributo personalizzato new-custom-attribute
Se, ad esempio, non si desidera utilizzare l'attributo esistente per cancellare la cache, è possibile creare un attributo personalizzato e definirne la funzionalità corrispondente.
-
Se devi solo cancellare la cache dalla memoria interna di AEM (la risposta graphql), devi seguire questo riferimento.
-
Se devi cancellare la cache dalla memoria interna e dalla cache del dispatcher, devi seguire questo riferimento.
note note NOTE È possibile ignorare la cache di cancellazione interna restituendo nullper il metodogetPatterns().