Я хотел бы использовать новую метку кэша в D8, чтобы помочь синхронизировать связанный контент различных типов (сущностей, узлов, блоков и т. Д.). Но, прочитав доступную в настоящее время документацию по этой функции, я не понимаю, как добавить собственный тег кеша к элементам содержимого при создании / обновлении указанных элементов.
Например, при создании нового узла типа Store я хотел бы добавить местоположение тега кеша: new_york_123 и то же самое для блока. Затем, если я изменил отображаемое имя местоположения New York 123 на SoHo, я мог бы сделать недействительным тег кеша и обновить все связанное содержимое.
Ответы:
Вот как использовать теги кеша в контексте пользовательских блоков, которые я пробовал и работает, но я думаю, что это применимо к другим контекстам
Использовать тэги drupal по умолчанию
В массиве сборки вы можете указать,
cache > tags > node_list
и содержимое этого блока станет недействительным (обновленным), когда ЛЮБОЙ УЗЕЛ будет изменен, и с вашей стороны больше ничего не делатьВ качестве альтернативы вы можете добавить один или несколько идентификаторов узлов / терминов / пользователей, чтобы сделать массив недействительным для определенных узлов или терминов, как показано в комментарии к коду выше. Примечание: вы можете смешивать и сопоставлять узлы, термины, пользователей и пользовательские теги по своему усмотрению.
Используйте свои собственные теги
если вы хотите иметь свой собственный способ очистки массива сборки, добавьте свой собственный уникальный тег в массив сборки (подойдет любая уникальная строка)
и в вашем собственном коде логика вызова
invalidateTags
с вашим собственным тегомесли вы хотите прочитать больше о внутренностях кеша drupal 8
источник
cache_tags.invalidator
сервис, а не ссылаться на класс напрямую.