Löschen von Komponenten- und GraphQL-Cache clear-cache
Dieses Dokument enthält eine umfassende Anleitung zum Aktivieren und Überprüfen der Funktion zum Löschen des Cache in AEM CIF.
Aktivieren der Funktion zum Löschen des Cache in der CIF-Konfiguration enable-clear-cache
Standardmäßig ist die Funktion zum Löschen des Cache in der CIF-Konfiguration deaktiviert. Um sie zu aktivieren, müssen Sie den entsprechenden Projekten Folgendes hinzufügen:
-
Aktivieren Sie das Servlet-
/bin/cif/invalidate-cache, mit dem Sie die Clear-Cache-API mit den entsprechenden Anfragen auslösen können, indem Sie diecom.adobe.cq.cif.cacheinvalidation.internal.InvalidateCacheNotificationImpl.cfg.json-Konfiguration in Ihrem Projekt hinzufügen, wie hier.note note NOTE Die Konfiguration muss nur für die Autoreninstanzen aktiviert werden. -
Aktivieren Sie den Listener, um den Cache jeder Instanz von AEM (Veröffentlichungs- und Autoreninstanz) zu löschen, indem Sie die
com.adobe.cq.commerce.core.cacheinvalidation.internal.InvalidateCacheSupport.cfg.jsonKonfiguration in Ihrem Projekt hinzufügen, wie hier.-
Die Konfiguration sollte sowohl für die Autoren- als auch für die Veröffentlichungsinstanz aktiviert sein.
-
Aktivieren des Dispatcher-Caches (optional): Sie können die Einstellung „Dispatcher-Cache löschen“ aktivieren, indem Sie in der obigen Konfiguration die Eigenschaft
enableDispatcherCacheInvalidationauf „true“ festlegen. Dies bietet die Möglichkeit, den Cache vom Dispatcher zu löschen.note note NOTE Dies funktioniert nur mit Veröffentlichungsinstanzen. -
Stellen Sie außerdem sicher, dass Sie das entsprechende Muster angeben, das Ihrem Produkt, Ihrer Kategorie und Ihrer CMS-Seite entspricht. Es muss zur obigen Konfigurationsdatei hinzugefügt werden, um es aus dem Dispatcher-Cache zu entfernen.
-
-
Um die Leistung von SQL-Abfragen beim Suchen der entsprechenden Seite für Produkt und Kategorie zu verbessern, fügen Sie den entsprechenden Index in Ihrem Projekt hinzu (empfohlen). Weitere Informationen finden Sie unter cifCacheInvalidationSupport.
Überprüfen der Funktion zum Löschen des Cache verify-clear-cache
So überprüfen Sie, ob alles ordnungsgemäß eingerichtet ist:
- Trigger Fügen Sie das entsprechende Servlet dem AEM der Autoreninstanz hinzu, z. B. http://localhost:4502/bin/cif/invalidate-cache und Sie sollten eine HTTP-Antwort von 200 erhalten.
- Stellen Sie sicher, dass in Autoreninstanzen unter dem folgenden Pfad ein Knoten erstellt wurde:
/var/cif/cacheinvalidation. Der Knotenname folgt diesem Muster:cmd_{{timestamp}}. - Stellen Sie sicher, dass in jeder Veröffentlichungsinstanz derselbe Knoten erstellt wurde.
So überprüfen Sie nun, ob die Caches ordnungsgemäß geleert werden:
-
Navigieren Sie zu den entsprechenden PLP- und PDP-Seiten.
-
Aktualisieren Sie einen Produkt- oder Kategorienamen in der Commerce-Engine. Die Änderungen werden basierend auf Cache-Konfigurationen nicht sofort in AEM übernommen.
-
Lösen Sie das Servlet-API wie hier gezeigt aus:
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. }'
Wenn alles gut geht, werden die neuen Änderungen in jeder Instanz widergespiegelt. Wenn die Änderungen nicht in der Veröffentlichungsinstanz sichtbar sind, versuchen Sie, die relevanten PLP- und PDP-Seiten in einem privaten/Inkognito-Browser-Fenster aufzurufen.
API zum Löschen der Cache-Invalidierung clear-cache-api
Dies ist das API, das Sie auslösen müssen, wenn Sie den Cache mit Commerce-bezogenen Daten aus AEM löschen möchten.
Abfragetyp: POST
Kopfzeilen headers
Content-Typeapplication/jsonAuthorizationPayload payload
Die folgende Tabelle zeigt die vorhandenen Attribute, die die Funktion standardmäßig bereitstellt. Diese InvalidateType-Eigenschaften müssen in Kombination mit einem obligatorischen Attribut angegeben werden (z. B. storePath).
invalidateTypeproductSkusLöschen Sie den Cache aus dem internen Speicher nach dem folgenden Muster:"\"sku\":\\s*\""
Dispatcher
- Löschen Sie den PDP-Seiten-Cache der entsprechenden SKUs
- Löschen Sie den Cache der entsprechenden Kategorieseite, in der sie vorhanden sind (basierend auf der GraphQL-Antwort von Commerce)
- Löschen Sie den Cache basierend auf der folgenden Abfrage:
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')))
categoryUidsLöschen Sie den Cache aus dem internen Speicher nach dem folgenden Muster:"\"uid\"\\s*:\\s*\\{\"id\"\\s*:\\s*\""
Dispatcher
- Löschen des Kategorieseiten-Cache für entsprechende Daten (einschließlich der untergeordneten Kategorieseite)
- Löschen Sie alle PDP-Seiten mit den entsprechenden Kategorien
- Löschen Sie den Cache basierend auf der folgenden Abfrage:
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')))
regexPatternscacheNamesinvalidateAllIn dieser Tabelle wird die obligatorische Eigenschaft angezeigt, die bei jedem API-Aufruf übergeben werden muss:
storePath/content/venia/us/en als Referenz mit dem Venia-Projekt).invalidateType. angewendet werdenBeispiel einer API-Anfrage 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"
}'
Erweiterbarkeit clear-cache-extensibility
Diese Funktion bietet nicht nur ihre Kernfunktionen, sondern auch Erweiterbarkeit, sodass Entwicklerinnen und Entwickler sie nach Bedarf weiter nutzen und anpassen können.
Erweitern des vorhandenen Attributs existing-attribute
In Fällen, wo der Cache gelöscht werden muss, die aber derzeit nicht von den vorhandenen attributbasierten Funktionen abgedeckt sind (z. B. categoryUids), können Sie diese Referenzdatei zu Rate ziehen, um neue Muster hinzuzufügen und zusätzliche invalidatePaths zu definieren, die über die aktuellen Implementierungen hinaus aus dem Cache gelöscht werden sollen.
Hinzufügen eines neuen benutzerdefinierten Attributs new-custom-attribute
Wenn Sie beispielsweise das vorhandene Attribut nicht zum Löschen des Cache verwenden möchten, haben Sie die Flexibilität, Ihr eigenes Attribut zu erstellen und die entsprechende Funktionalität zu definieren.
-
Wenn Sie nur den Cache aus dem internen Speicher von AEM löschen müssen (die GraphQL-Antwort), müssen Sie diese Referenz.
-
Wenn Sie den Cache aus dem internen Speicher und dem Dispatcher-Cache löschen müssen, müssen Sie diese Referenz“
note note NOTE Sie können den internen Cache zum Löschen ignorieren, indem Sie nullfür die MethodegetPatterns()zurückgeben.