【问题标题】:Content Cache dependency in Kentico V9Kentico V9 中的内容缓存依赖项
【发布时间】:2020-06-30 14:38:48
【问题描述】:

我想在更新另一个自定义表项时更新一个自定义表的缓存内容。 假设我有两个自定义表:产品和订单。 产品和订单都有列表和编辑页面。

在 DB 中,如果 Product 发生更改,则 Product 上有一个触发器会更新 Order 上的一些数据。

我的情况是,当我更新产品 1(产品类型之一)时,我希望订单(所有订单)缓存刷新并反映订单数据库中所做的更改。现在不会发生这种情况。

内容缓存的全局设置为 10 分钟。但不知何故,反映变化需要 20 分钟。不知道为什么。 同样在订单的 CustomTableRepeater 的系统设置->缓存分钟设置为 0 意味着它根本不应该缓存内容,但它仍然如此,所以我在这里不知所措

这种情况的答案是根据 Kentico 文档设置缓存依赖虚拟键。

我的问题是:

  1. 是否在Product的编辑页面的web part部分输出缓存依赖属性上设置所有订单的依赖key?

例如orders|all

当任何产品被修改时,这是否会刷新为自定义表数据源缓存的所有订单记录?

  1. 或者我在订单转发器的系统设置->内容缓存依赖属性上设置了所有产品的依赖键?

例如products|all

请注意缓存分钟属性设置为 0,因此理想情况下不应缓存此内容。

  1. 或者将上面的键添加到订单的编辑页面的webpart的部分输出依赖?

另外对于自定义表如何获得正确的虚拟密钥?是吗

products|all

nodes|corportateside|products|all

customtableitem.products|all

或者我需要添加可以在 debug->cache settings 中看到的页面的虚拟键?

我已经尝试设置所有这些东西,但似乎没有任何效果。 非常感谢任何帮助。

【问题讨论】:

    标签: kentico cache-dependency


    【解决方案1】:

    好的,原来是非缓存问题。

    我能够解决我的问题。将答案放在这里以供将来参考我将首先列出我尝试过的内容:

    1. 已安装修补程序
    2. 添加部分缓存依赖键
    3. 为内容缓存添加缓存依赖项。没有任何效果。

    通过阅读以下问题的答案得到一个想法:https://devnet.kentico.com/questions/kentico-8-2-database-caching

    当我更新 CustomTable A 的数据时,A 上的 DB 触发器会更新表 B 中的数据,我需要在站点的缓存中刷新这些数据。

    当我从管理员的调试应用程序中尝试“清除缓存”时,它仍然没有更新站点中的数据。此外,我在 Admin 中的自定义表格数据也没有得到更新。

    所以从上面的问题中阅读了一个答案,我意识到我需要刷新 Hashtables 以便在管理员和站点中刷新数据。

    所以我在 OnAfterSave 事件处理程序中向 CustomTableForm.aspx.cs 添加了代码。这里我检查当前CustomTable是否是我的表A,然后刷新B的哈希表。

    这行得通。

    【讨论】:

      猜你喜欢
      • 2018-06-20
      • 2011-11-11
      • 1970-01-01
      • 1970-01-01
      • 2015-09-30
      • 1970-01-01
      • 1970-01-01
      • 2014-11-10
      • 2022-12-18
      相关资源
      最近更新 更多