带有组件的模板的上下文缓存

发布于 2024-10-11 17:37:00 字数 250 浏览 1 评论 0原文

我有一个带有菜单组件的页面。菜单用不同的 CSS 类标记活动元素。

现在我想缓存每个菜单项页面。不同的页面都来自相同的模块/操作,区别只是 ID (foo/bar?item=1)

问题是菜单只缓存一次,但我需要每个菜单项的缓存版本。

我刚刚尝试了缓存选项“contextual: true”,但我认为这不起作用,因为主模板(barSuccess)始终相同。

你们有什么想法,如何解决这个问题吗?

I have a page with a menu component. The menu marks the active element with a different CSS class.

Now I want to cache each menu item page. The different pages come all from the same module/action, the difference is just the ID (foo/bar?item=1).

The problem is that the menu is only cached one time, but I need a cache version for every menu item.

I just tried the cache option "contextual: true", but I think this does not work because the main template (barSuccess) is always the same.

Do you guys have any idea, how to solve this problem?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

素食主义者 2024-10-18 17:37:00

您可以通过将 sf_cache_key 传递给组件来强制缓存密钥:

include_component('menu', 'main', array('sf_cache_key' => $sf_params->get('item')));

这样组件将为每个“item”值进行缓存。

另一种方法是使用不同的参数集:

include_component('menu', 'main', array('item' => $sf_params->get('item')));

这种方式组件也将为项目的每个值进行缓存。

在第一个解决方案中,您强制使用缓存键。当您需要自定义逻辑来决定是否应该生成缓存时,它非常有用。

第二种解决方案依赖于这样的事实:组件会针对传递给它的参数值的每种组合进行缓存(当然可以有多个)。

You can force cache key by passing the sf_cache_key to the component:

include_component('menu', 'main', array('sf_cache_key' => $sf_params->get('item')));

This way component will be cached for every value of 'item'.

Another way is to use different sets of parameters:

include_component('menu', 'main', array('item' => $sf_params->get('item')));

This way component will be cached for every value of item as well.

In the first solution you force the cache key. It's useful when you need custom logic to decide if the cache should be generated or not.

The second solution relies on fact that component is cached for every combination of parameter values passed to it (there can be more than one of course) .

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文