TYPO3 MenuProcessor缓存配置报错 如何禁用缓存或设置唯一缓存key
报错原因说明
你直接给MenuProcessor顶层配置添加cache属性会触发参数校验异常,是因为MenuProcessor的顶层配置并不会直接透传所有HMENU属性,仅options项下的配置才会传递给底层HMENU对象;11LTS及以上版本新增的处理器级缓存配置也有独立的声明规则,不符合规则的配置会被直接拦截。
可选实现方案
方案一:完全禁用MenuProcessor缓存
直接配置处理器原生支持的cache.disabled参数即可,优先级高于所有缓存规则,适合需要菜单每次渲染都动态生成的场景:
page.10 = FLUIDTEMPLATE page.10 { dataProcessing { 10 = TYPO3\CMS\Frontend\DataProcessing\MenuProcessor 10 { # 你的原有菜单配置 special = directory special.value = 1 levels = 2 as = mainMenu # 禁用当前MenuProcessor的所有缓存 cache.disabled = 1 } } }
方案二:配置唯一缓存key
根据你使用的TYPO3版本选择对应方式即可:
适用11LTS及以上版本(原生支持)
直接使用处理器级的cache.key配置,支持插入动态数据生成唯一key:
10 = TYPO3\CMS\Frontend\DataProcessing\MenuProcessor 10 { # 原有菜单配置省略 cache { # 示例:用站点ID+当前页面ID+用户组ID拼接唯一key,可按需自定义规则 key = site_{site:identifier}_menu_{page:uid}_{user:usergroup} key.insertData = 1 # 还可自定义缓存有效期 lifetime = 1800 } }
适用10LTS及更低版本(透传HMENU配置)
将HMENU的cache属性放到options项下,即可直接透传给底层HMENU生效:
10 = TYPO3\CMS\Frontend\DataProcessing\MenuProcessor 10 { # 原有菜单配置省略 options { cache { key = custom_unique_menu_key lifetime = 3600 # 所有HMENU cache支持的属性都可在此配置 } } }
内容的提问来源于stack exchange,提问作者EmWe
相关产品推荐
相关产品推荐

