You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

TYPO3 MenuProcessor缓存配置报错 如何禁用缓存或设置唯一缓存key

TYPO3 MenuProcessor缓存配置解决方案

报错原因说明

你直接给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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 05:39:03