1

如何在 Kentico CMS 中使用部分依赖缓存?

这是我需要的一个非常常见的示例,但无法弄清楚如何正确设置带有依赖项的部分缓存(在门户模式下,尽管我认为这也应该适用于其他开发模式):

  • /Home(带中继器)
  • /消息
    • 第 1 项(因此路径 = /News/Item-1)
    • 第 2 项(所以路径 = /News/Item-2)

主页有一个Repeater Web 部件,其中列出了最新的新闻项目。它的路径为“/%”,文档类型过滤器设置为“CMS.News”;显然还有一个“部分缓存分钟”值> 0。没有自定义代码;只是门户 Web 部件和标准文档类型。

我应该使用什么确切的“部分缓存依赖项”字符串,以便当第三个新闻项目立即反映在主页上,但否则使用缓存?

Kentico 确实发布了几篇博客文章,包括Deep dive: Cache dependencies,但我很难将那里讨论的理论应用到网站上。我什至在评论中问了一些问题,但是那里的 Kentico 支持人员的回答并没有真正的帮助。

从我在那篇文章中可以看出,他们说使用node|%CurrentSite.SiteName%}|/News|childnodeswhich 似乎有一些神奇的关键字node,比如{%CurrentSite.SiteName%}. (我知道所有项目都需要小写,所以我已经知道他们的建议并不是真正一致的。至少应该是node|%CurrentSite.SiteName%}|/news|childnodes。我需要在宏上强制小写吗?)首先,那个字符串没有对我不起作用——它仍在缓存主页热门新​​闻转发器(是的,整页缓存已关闭);第二,我如何构建这样的字符串并调试它应该是什么?链接的帖子确实有一个示例网格,但它(对我来说)令人困惑并且并不详尽。

任何人都可以在任何地方提供一个很好的例子或更好的博客文章参考来以另一种方式解释这一点吗?

编辑:我意识到我问的这个问题相当广泛。如果我们缩小范围以回答这个问题怎么样:如何确定使用哪些设置来缓存中继器,该中继器依赖于另一个文件夹中的更改?

4

2 回答 2

1

我打开缓存调试并查看正在生成的缓存名称。我看到我的设置为...

node|{%CurrentSite.SiteName%}|/test-section/|childnodes

...这显然是不正确的,永远不会工作!

看起来宏没有在 Partial Cache Dependencies 属性中得到解析。因此,您不能使用“{%CurrentSite.SiteName%}”代替站点名称。这是对我有用的部分缓存依赖项的示例...

node|mytestsite|/test-section/|childnodes

使用上面的部分缓存依赖,一旦我删除了一个子项,缓存就会被刷新。

于 2011-09-07T19:00:09.447 回答
1

您在帖子中提到的魔术词基本上是特定对象的关键字。您可以在缓存选项描述中看到它们 - 其中列出了“node”、“nodes”、“nodeid”作为使用节点最常见的。但是下面将描述任何对象的语法,您将在其中使用该对象类名称。

关于 Kentico 的 CTO 的博客文章和他在评论中的回答,看起来他忽略或误解了你的问题。您正在谈论部分缓存,他正在为您提供有关“正常”缓存设置的示例。触摸键中的宏在所有其他缓存设置中被解析(小写或大写无关紧要),但在部分缓存中不解析。此功能将在即将发布的 6.0 版本中提供。

因此,现在您必须在触摸键缓存设置中硬编码站点名称。

于 2011-09-12T13:32:53.213 回答