1
我有一个菜单组件的页面。该菜单使用不同的CSS类标记活动元素。组件模板的上下文缓存
现在我想缓存每个菜单项页面。不同的页面来自同一模块/动作,差异仅在于ID。
问题是菜单只缓存一次,但我需要每个菜单项的缓存版本。
我刚刚尝试过缓存选项“contextual:true”,但我认为这不起作用,因为主模板(barSuccess)总是相同的。
你们有什么想法,该如何解决这个问题?
我有一个菜单组件的页面。该菜单使用不同的CSS类标记活动元素。组件模板的上下文缓存
现在我想缓存每个菜单项页面。不同的页面来自同一模块/动作,差异仅在于ID。
问题是菜单只缓存一次,但我需要每个菜单项的缓存版本。
我刚刚尝试过缓存选项“contextual:true”,但我认为这不起作用,因为主模板(barSuccess)总是相同的。
你们有什么想法,该如何解决这个问题?
您可以通过将sf_cache_key到分力缓存键:
include_component('menu', 'main', array('sf_cache_key' => $sf_params->get('item')));
这样组件将被缓存“项目”的每一个值。
的另一种方法是使用不同的参数集:
include_component('menu', 'main', array('item' => $sf_params->get('item')));
这样组件将用于项目的每一个值被缓存,以及。
在第一个解决方案中,您强制缓存密钥。当您需要自定义逻辑来决定是否生成缓存时,它非常有用。
第二种解决方案依赖于事实,即对传递给它的每个参数值组合都可以缓存组件(当然可以有多个组合)。
Thx为您的答案。是否可以在组件操作中设置此参数? 我在问,因为我在layout.php中使用了一些组件,而且我不想在layout.php中生成缓存键。 – ownking 2011-01-17 09:21:16