Всем блокам меню друпал добавляет кэш-контекст route.menu_active_trails
, который создаёт новый кэш блока в зависимости от активной ссылки (т.е. если меню содержит сто ссылок, то по итогу в cache_render
будет 101 вариант этого блока).
Если меню достаточно большое и все пункты в нём раскрыты по умолчанию, то можно безболезненно удалить этот кэш-контекст, позволив держать в кэше только одну версию блока.
Пример для меню main
:
/**
* Implements hook_block_build_BASE_BLOCK_ID_alter(): system_menu_block.
*/
function MODULENAME_block_build_system_menu_block_alter(array &$build, BlockPluginInterface $block) {
if ($block->getDerivativeId() == 'main') {
$build['#cache']['contexts'] = array_diff($build['#cache']['contexts'], ['route.menu_active_trails:' . $block->getDerivativeId()]);
}
}
Написанное актуально для
Drupal 8
Похожие записи
- Тюнинг кэширования блоков с формой
- Добавить своё действие над сущностью в contextual links
- Добавить своё действие над сущностью в operations links
- Дружим Sape и Internal Page Cache (вставка динамического содержимого в закэшированную страницу)
- Плагин блока, генерящий динамический контент с помощью #lazy_builder
Добавить комментарий