Ecco come utilizzare i tag cache nel contesto di blocchi personalizzati che ho provato e funziona ma penso che si applichi ad altri contesti
Usa i tag drupal predefiniti
Nell'array build è possibile specificare cache > tags > node_list
e il contenuto di questo blocco verrebbe invalidato (aggiornato) quando QUALUNQUE NODO viene modificato con nient'altro da fare da parte tua
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
],
);
}
In alternativa è possibile inserire uno o più ID nodo / termine / utente per invalidare l'array su nodi o termini specifici, come mostrato nel commento di codice sopra. Nota: puoi combinare nodi, termini, utenti e tag personalizzati secondo le tue esigenze.
Usa i tuoi tag
se vuoi avere il tuo modo di cancellare l'array di build aggiungi il tuo tag univoco personalizzato nell'array di build (qualsiasi stringa univoca lo farà)
public function build() {
return array(
'#markup' => MY_MODULE_awesome_dynamic_node_content(),
'#cache' => [
'tags' => ['MY_CUSTOM_UNIQUE_TAG'],
],
);
}
e nella tua logica del codice personalizzata chiama invalidateTags
con il tuo tag
function MY_MODULE_custom_clear_cache_logic(){
...
\Drupal\Core\Cache\Cache::invalidateTags(array('MY_CUSTOM_UNIQUE_TAG'));
se vuoi leggere di più su Drupal 8 cache internals