【发布时间】:2011-11-11 07:34:37
【问题描述】:
如何在 Kentico CMS 中使用部分依赖缓存?
这是一个非常常见的示例,我需要但不知道如何正确设置带有依赖项的部分缓存(在门户模式下,尽管我认为这也应该适用于其他开发模式):
- /首页(带中继器)
- /新闻
- 第 1 项(因此路径 = /News/Item-1)
- 第 2 项(因此路径 = /News/Item-2)
主页有一个Repeater Web 部件,其中列出了最新的新闻项目。它的路径为“/%”,文档类型过滤器设置为“CMS.News”;显然还有一个“部分缓存分钟”值> 0。没有自定义代码;只是门户 Web 部件和标准文档类型。
我应该使用什么确切的“部分缓存依赖项”字符串,以便当第三条新闻立即反映在主页上,否则使用缓存?
Kentico 确实发布了几篇博客文章,包括 Deep dive: Cache dependencies,但我很难将那里讨论的理论应用于网站。我什至在 cmets 那里问了一些问题,但那里的 Kentico 支持人员的回答并没有真正的帮助。
据我在那篇文章中所说,他们说要使用 node|%CurrentSite.SiteName%}|/News|childnodes,它似乎有一些神奇的关键字,如 node 和一些宏元素,如 {%CurrentSite.SiteName%}。 (我知道所有项目都需要小写,所以我已经知道他们的建议不是真正一致的。至少应该是node|%CurrentSite.SiteName%}|/news|childnodes。我需要在宏上强制小写吗?)首先,那字符串对我不起作用——它仍在缓存主页热门新闻转发器(是的,整页缓存已关闭);第二,我如何构建这样的字符串并调试它应该是什么?链接的帖子确实有一个示例网格,但它(对我来说)令人困惑并且并不详尽。
任何人都可以在任何地方提供一个很好的例子或更好的博客文章参考来以另一种方式解释这一点吗?
编辑:我意识到我问的这个问题相当广泛。如果我们缩小范围以回答以下问题怎么样:如何确定使用哪些设置来缓存中继器,该中继器依赖于另一个文件夹中的更改?
【问题讨论】:
-
使用 Kentico 博客文章中提到的调试工具,我终于想到,在这种情况下,让它在 v5.5R2 中正确使用缓存依赖项的唯一方法是使用系统属性缓存设置(不是部分缓存)并使用
cmsdatasource||en-us|{%CurrentSite.SiteName%}|/news/%的值,这与文章声称的工作方式并不完全一致。但是更好的文档以及为什么我的解决方案有效的问题仍然存在。