Voici comment utiliser les balises de cache dans le contexte des blocs personnalisés que j'ai essayés et qui fonctionnent mais je pense que cela s'applique à d'autres contextes
Utiliser des balises Drupal par défaut
Dans le tableau de construction, vous pouvez spécifier cache > tags > node_list
et ce contenu de bloc serait invalidé (actualisé) lorsque TOUT NŒUD est modifié sans rien d'autre à faire de votre part
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
],
);
}
Vous pouvez également insérer un ou plusieurs ID de nœud / terme / utilisateur pour invalider la baie sur des nœuds ou des termes spécifiques, comme indiqué dans le commentaire de code ci-dessus. Remarque: vous pouvez mélanger et faire correspondre les nœuds, les termes, les utilisateurs et les balises personnalisées comme bon vous semble.
Utilisez vos propres balises
si vous voulez avoir votre propre façon d'effacer votre tableau de build, ajoutez votre balise unique personnalisée dans le tableau de build (n'importe quelle chaîne unique fera l'affaire)
public function build() {
return array(
'#markup' => MY_MODULE_awesome_dynamic_node_content(),
'#cache' => [
'tags' => ['MY_CUSTOM_UNIQUE_TAG'],
],
);
}
et dans votre appel de logique de code personnalisé invalidateTags
avec votre propre balise
function MY_MODULE_custom_clear_cache_logic(){
...
\Drupal\Core\Cache\Cache::invalidateTags(array('MY_CUSTOM_UNIQUE_TAG'));
si vous voulez en savoir plus sur les internes du cache drupal 8