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.

NOTE
Diese Funktion ist experimentell.

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 die com.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.json Konfiguration 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 enableDispatcherCacheInvalidation auf „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:

  1. Navigieren Sie zu den entsprechenden PLP- und PDP-Seiten.

  2. Aktualisieren Sie einen Produkt- oder Kategorienamen in der Commerce-Engine. Die Änderungen werden basierend auf Cache-Konfigurationen nicht sofort in AEM übernommen.

  3. 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.

NOTE
Veröffentlichungsinstanzen können über mehrere Cache-Ebenen verfügen. Die Funktion ist nur für das Löschen des Cache aus dem internen Speicher und Dispatcher von AEM verantwortlich.

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

Parameter
Wert
Erforderlich/Obligatorisch
Kommentar
Content-Type
application/json
Erforderlich
Authorization
Entsprechende Benutzeranmeldeinformationen der Autorin oder des Autors (Authentifizierungstyp: Standardauthentifizierung)
Erforderlich
Fügen Sie den entsprechenden Benutzernamen und das Passwort hinzu.

Payload 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).

invalidateType
Wert
Typ (Array/String/Boolean)
Löscht dies den Dispatcher-Cache?
Kommentar
productSkus
Produkt-SKU (die im Cache ungültig gemacht werden muss).
Array
Ja

Lö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')))

categoryUids
Die UID der Kategorie (die im Cache ungültig gemacht werden muss).
Array
Ja

Lö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')))

regexPatterns
Wenn Sie die GraphQL-Antwortdaten basierend auf dem Regex-Muster löschen müssen, verwenden Sie dies.
Array
Nein
cacheNames
Diese Werte werden unter der entsprechenden CIF GraphQL Client Configuration Factory > Entsprechende StorePath-GraphQL-Konfiguration > GraphQL-Cache-Konfigurationen definiert
Array
Nein
invalidateAll
„True“ oder „False“
Boolesch
Ja

In dieser Tabelle wird die obligatorische Eigenschaft angezeigt, die bei jedem API-Aufruf übergeben werden muss:

Eigenschaft
Wert
Typ (Array/String/Boolean)
Löscht dies den Dispatcher-Cache?
Kommentar
storePath
Entsprechender Wert des Site-Pfads, aus dem der Cache entfernt werden muss (Beispiel: /content/venia/us/en als Referenz mit dem Venia-Projekt).
Zeichenfolge
Ja
Dies muss zusammen mit der Kombination aus invalidateType. angewendet werden

Beispiel 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 null für die Methode getPatterns() zurückgeben.
recommendation-more-help
fbcff2a9-b6fe-4574-b04a-21e75df764ab