Si vous souhaitez vider le cache sur un tableau de rendu lorsqu'un nœud est mis à jour, vous pouvez ajouter en tant que cache_tag, "node_list":
'#cache' => [
'tags' => ['node_list']
],
Mais il n'y a aucun moyen de le faire lorsque seuls les nœuds d'un certain ensemble sont ajoutés ou mis à jour.
Si vous avez un bloc, par exemple, et que vous souhaitez vider le cache dessus quand un nœud avec un "article" de bundle est ajouté ou mis à jour, comment feriez-vous cela?
Vous pouvez facilement créer une balise de cache personnalisée liée aux propriétés sur les nœuds en l'invalidant vous-même.
Basé sur cet article: https://www.drupal.org/project/views_custom_cache_tag
J'ai créé une balise personnalisée pour chaque type de nœud, qui est invalidée lors de la mise à jour du nœud:
/**
* Implements hook_ENTITY_TYPE_presave().
*/
function mymodule_node_presave(Node $node) {
// Allows for clearing of blocks based on node type.
$tags = ['node_type:' . $node->getType()];
Cache::invalidateTags($tags);
}
/**
* Implements hook_ENTITY_TYPE_delete().
*/
function mymodule_node_delete(Node $node) {
// Allows for clearing of blocks based on node type.
$tags = ['node_type:' . $node->getType()];
Cache::invalidateTags($tags);
}
Ensuite, dans mon tableau de build pour mon bloc, j'ai ajouté:
$build['#cache'] = [
'tags' => [
'node_type:article',
'node_type:video'
],
];
Cela signifie que ce bloc ne sera actualisé que lorsque des nœuds de type "article" ou "vidéo" seront créés ou mis à jour.
Vous pouvez faire le même processus pour n'importe quelle propriété sur une entité, pas seulement un ensemble. Par exemple, si vous souhaitez qu'une liste de nœuds reste en cache à moins que les nœuds qu'elle contient ne modifient leur alias d'URL, vous pouvez ajouter du code qui vérifie si les alias d'URL changent, puis invalider votre nœud de balise: 123: url_alias ".
Pour d'autres ayant cette même question d'avoir des balises de cache basées sur un bundle, il existe un module "pratique" Handy Cache Tags qui fonctionne très bien. https://www.drupal.org/project/handy_cache_tags