Ich möchte das neue Cache-Tagging in D8 verwenden, um verwandte Inhalte verschiedener Typen (Entitäten, Knoten, Blöcke usw.) synchron zu halten. Nach dem Lesen der derzeit verfügbaren Dokumentation zu dieser Funktion verstehe ich jedoch nicht, wie ich beim Erstellen / Aktualisieren dieser Elemente meinen eigenen Cache-Tag zu den Inhaltselementen hinzufügen kann.
Zum Beispiel möchte ich beim Erstellen eines neuen Knotens vom Typ Store den Cache-Tag-Speicherort hinzufügen: new_york_123 und dasselbe für einen Block. Wenn ich dann den Anzeigenamen des New York 123-Standorts in SoHo änderte, konnte ich das Cache-Tag ungültig machen und alle zugehörigen Inhalte aktualisieren.
Antworten:
Hier erfahren Sie, wie Sie Cache-Tags im Kontext von benutzerdefinierten Blöcken verwenden, die ich ausprobiert habe und die meiner Meinung nach auch in anderen Kontexten funktionieren
Verwenden Sie Standard-Drupal-Tags
In dem Build-Array können Sie angeben, dass
cache > tags > node_list
dieser Blockinhalt ungültig (aktualisiert) wird, wenn ein beliebiger Knoten geändert wird, ohne dass Sie etwas anderes tun müssenAlternative Sie eine oder mehrere Knoten- / Begriffs- / Benutzer-IDs eingeben, um das Array auf bestimmten Knoten oder Begriffen ungültig zu machen, wie im obigen Codekommentar gezeigt. Hinweis: Sie können Knoten, Begriffe, Benutzer und benutzerdefinierte Tags beliebig mischen und zuordnen.
Verwenden Sie Ihre eigenen Tags
Wenn Sie Ihr Build-Array auf Ihre eigene Weise löschen möchten, fügen Sie Ihr benutzerdefiniertes eindeutiges Tag in das Build-Array ein (jede eindeutige Zeichenfolge reicht aus).
und in Ihrer benutzerdefinierten Code-Logik
invalidateTags
mit Ihrem eigenen Tag aufrufenWenn Sie mehr über Drupal 8-Cache-Interna erfahren möchten
quelle
cache_tags.invalidator
Service idealerweise eher nutzen, als eine Klasse direkt zu referenzieren.