Ось як використовувати теги кеша в контексті користувацьких блоків, які я спробував і працює, але я думаю, що це стосується інших контекстів
Використовуйте теги drupal за замовчуванням
У масиві збірки ви можете вказати, cache > tags > node_list
і цей вміст блоку буде недійсним (оновленим), коли будь-який вузол буде змінено і нічого іншого робити з вашого боку
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
],
);
}
Крім того, ви можете ввести один або кілька ідентифікаторів вузла / терміна / користувача, щоб визнати недійсним масив для конкретних вузлів або термінів, як показано в коментарі до коду вище. Примітка. Ви можете змішувати і узгоджувати вузли, терміни, користувачів та спеціальні теги так, як вважаєте за потрібне.
Використовуйте власні теги
якщо ви хочете мати власний спосіб очищення масиву збирання, додайте у масив збірки власний унікальний тег (будь-яка унікальна рядок буде робити)
public function build() {
return array(
'#markup' => MY_MODULE_awesome_dynamic_node_content(),
'#cache' => [
'tags' => ['MY_CUSTOM_UNIQUE_TAG'],
],
);
}
і у вашому користувальницькому логічному коді виклик invalidateTags
із власним тегом
function MY_MODULE_custom_clear_cache_logic(){
...
\Drupal\Core\Cache\Cache::invalidateTags(array('MY_CUSTOM_UNIQUE_TAG'));
якщо ви хочете прочитати більше про внутрішні кеші drupal 8