如何在Kentico CMS中使用部分依赖关系缓存?
这是我需要的一个非常常见的示例,但无法确定如何正确设置具有依赖关系的部分缓存(在Portal模式下,尽管我认为这也适用于其他开发模式):
- / Home(使用中继器)
- /新闻
- 第1项(所以路径= /新闻/项目-1)
- 第2项(所以路径= /新闻/项目-2)
主页上有一个Repeater Web部件,列出了最新的新闻。它的路径为“/%”,文档类型过滤器设置为“CMS.News”;显然也是“部分缓存分钟”值> 0.没有自定义代码;只是门户Web部件和标准文档类型。
我应该使用什么确切的“部分缓存依赖关系”字符串,以便当第三个新闻项立即反映在主页上,但是否则使用缓存?
Kentico确实发布了几篇博文,包括Deep dive: Cache dependencies,但我很难将在那里讨论的理论应用到网站上。我甚至在评论中提出了一些问题,但Kentico支持的答案并没有真正帮助。
从我在该帖子中可以看出,他们说使用node|%CurrentSite.SiteName%}|/News|childnodes
似乎有一些神奇的关键字,如node
和一些宏元素,如{%CurrentSite.SiteName%}
。 (我知道所有项目都需要小写,所以我已经知道他们的建议并不是真正的一致。它应该至少是node|%CurrentSite.SiteName%}|/news|childnodes
。我是否需要在宏上强制小写?)首先,该字符串对我不起作用 - 它仍然缓存主页Top News中继器(是的,整页缓存已关闭);第二,如何构建这样的字符串并调试它应该是什么?链接的帖子确实有一个示例网格,但它(对我而言)并不令人困惑,而且并非详尽无遗。
任何人都可以通过其他方式提供一个好的示例或更好的博客帖子参考吗?
编辑:我意识到我相当广泛地问了这个问题。如果我们将其缩小到仅回答问题:如何确定用于缓存具有依赖性的转发器的设置到另一个文件夹中的更改呢?答案 0 :(得分:1)
我打开了缓存调试并查看了生成的缓存名称。我看到我的目标......
node|{%CurrentSite.SiteName%}|/test-section/|childnodes
......这显然不正确,永远不会奏效!
看起来宏在Partial Cache Dependencies属性中没有得到解析。因此,您无法使用“{%CurrentSite.SiteName%}”代替网站名称。这是一个对我有用的部分缓存依赖的例子......
node|mytestsite|/test-section/|childnodes
使用上面的部分缓存依赖性,一旦删除子项,缓存就会刷新。
答案 1 :(得分:1)
您在帖子中提到的神奇字词基本上是特定对象的关键字。您可以在caching options描述中看到它们 - “节点”,“节点”,“nodeid”列在那里,最常用于处理节点。但是在下面描述了任何对象的语法,您将使用该对象类名称。
关于Kentico首席技术官的博客文章以及他在评论中的回答,看起来他忽略或误解了你的问题。你在谈论部分缓存,他正在给你关于“正常”缓存设置的例子。在所有其他缓存设置中解析触摸键中的宏(小写或大写无关紧要),但不在部分缓存中解析。此功能将在即将发布的6.0版本中提供。
因此,您现在必须在触摸键缓存设置中对网站名称进行硬编码。