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üssen
public function build() {
return array(
'#markup' => MY_MODULE_awesome_dynamic_node_content(),
'#cache' => [
'tags' => ['node_list'], //invalidate when any node updates
//'tags' => ['node:1','term:2'], //invalidate when node 1 or term 2 updates
],
);
}
Alternative 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).
public function build() {
return array(
'#markup' => MY_MODULE_awesome_dynamic_node_content(),
'#cache' => [
'tags' => ['MY_CUSTOM_UNIQUE_TAG'],
],
);
}
und in Ihrer benutzerdefinierten Code-Logik invalidateTags
mit Ihrem eigenen Tag aufrufen
function MY_MODULE_custom_clear_cache_logic(){
...
\Drupal\Core\Cache\Cache::invalidateTags(array('MY_CUSTOM_UNIQUE_TAG'));
Wenn Sie mehr über Drupal 8-Cache-Interna erfahren möchten