Oto jak używać znaczników pamięci podręcznej w kontekście niestandardowych bloków, które próbowałem i działam, ale myślę, że dotyczy to innych kontekstów
Użyj domyślnych tagów drupal
W tablicy kompilacji, którą możesz określić, cache > tags > node_list
treść bloku zostanie unieważniona (odświeżona), gdy DOWOLNY WĘDEK zostanie zmieniony i nic więcej nie zrobisz z twojej strony
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
],
);
}
Alternatywnie możesz podać jeden lub więcej identyfikatorów węzłów / terminów / użytkowników, aby unieważnić tablicę na określonych węzłach lub terminach, jak pokazano w komentarzu do kodu powyżej. Uwaga: możesz łączyć i dopasowywać węzły, terminy, użytkowników i tagi niestandardowe według własnego uznania.
Użyj własnych tagów
jeśli chcesz mieć własny sposób czyszczenia tablicy kompilacji, dodaj niestandardowy unikatowy tag do tablicy kompilacji (wystarczy dowolny unikatowy ciąg)
public function build() {
return array(
'#markup' => MY_MODULE_awesome_dynamic_node_content(),
'#cache' => [
'tags' => ['MY_CUSTOM_UNIQUE_TAG'],
],
);
}
oraz w niestandardowym wywołaniu logiki kodu invalidateTags
z własnym znacznikiem
function MY_MODULE_custom_clear_cache_logic(){
...
\Drupal\Core\Cache\Cache::invalidateTags(array('MY_CUSTOM_UNIQUE_TAG'));
jeśli chcesz przeczytać więcej o wewnętrznych elementach pamięci podręcznej drupal 8