Aquí se explica cómo usar etiquetas de caché en el contexto de bloques personalizados que he probado y funciona, pero creo que se aplica a otros contextos.
Usar etiquetas drupal predeterminadas
En la matriz de compilación puede especificar cache > tags > node_list
y este contenido de bloque se invalidaría (actualizaría) cuando CUALQUIER NODO se cambie sin nada más que hacer de su parte
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
],
);
}
Alternativamente , puede poner uno o más ID de nodo / término / usuario para invalidar la matriz en nodos o términos específicos como se muestra en el comentario del código anterior. Nota: puede mezclar y combinar nodos, términos, usuarios y etiquetas personalizadas como mejor le parezca.
Usa tus propias etiquetas
si desea tener su propia forma de borrar su matriz de compilación, agregue su etiqueta única personalizada en la matriz de compilación (cualquier cadena única servirá)
public function build() {
return array(
'#markup' => MY_MODULE_awesome_dynamic_node_content(),
'#cache' => [
'tags' => ['MY_CUSTOM_UNIQUE_TAG'],
],
);
}
y en su código lógico personalizado llame invalidateTags
con su propia etiqueta
function MY_MODULE_custom_clear_cache_logic(){
...
\Drupal\Core\Cache\Cache::invalidateTags(array('MY_CUSTOM_UNIQUE_TAG'));
si desea leer más sobre los componentes internos de caché de drupal 8