Aqui está como usar tags de cache no contexto de blocos personalizados que eu tentei e funciona, mas acho que se aplica a outros contextos
Use tags drupal padrão
Na matriz de compilação, você pode especificar cache > tags > node_list
e esse conteúdo do bloco será invalidado (atualizado) quando QUALQUER NOME for alterado, sem mais nada a fazer da sua 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
],
);
}
Como alternativa, você pode inserir um ou mais IDs de nó / termo / usuário para invalidar a matriz em nós ou termos específicos, conforme mostrado no comentário de código acima. Nota: você pode misturar e combinar nós, termos, usuários e tags personalizadas conforme desejar.
Use suas próprias tags
se você quiser ter sua própria maneira de limpar sua matriz de compilação, adicione sua tag exclusiva personalizada na matriz de compilação (qualquer string exclusiva serve)
public function build() {
return array(
'#markup' => MY_MODULE_awesome_dynamic_node_content(),
'#cache' => [
'tags' => ['MY_CUSTOM_UNIQUE_TAG'],
],
);
}
e em sua chamada lógica de código personalizado invalidateTags
com sua própria tag
function MY_MODULE_custom_clear_cache_logic(){
...
\Drupal\Core\Cache\Cache::invalidateTags(array('MY_CUSTOM_UNIQUE_TAG'));
se você quiser ler mais sobre os internos do cache do drupal 8