在AEM中为特定组件实例禁用Dispatcher缓存

在Adobe Experience Manager (AEM)中,当一个页面上的多个组件共享同一resourceType时,为特定组件实例禁用Dispatcher缓存会变得困难。 例如,如果页面A包含组件A和组件B,并且两者使用相同的resourceType(例如,C),则使用Sling动态包含(SDI)从缓存中排除C将影响这两个组件。 但是,该要求是在缓存组件A的同时排除组件B。要实现此目的,请为组件B创建一个代理组件,并将SDI配置为仅定向代理。

描述 description

环境

  • 产品: Adobe Experience Manager (AEM)
  • 实例: 任何使用SDI和共享resourceType组件的环境

问题/症状

  • 一个页面上的多个组件共享同一resourceType
  • 只需从Dispatcher缓存中排除一个组件实例。
  • SDI排除所有具有相同resourceType的组件。
  • 使用默认配置无法实现选择性缓存控制。

解决方法 resolution

要解决此问题,请执行以下步骤:

  1. 为要从缓存中排除的组件(例如代理组件B)创建代理组件(例如代理组件D)。
  2. 将代理配置为使用与原始组件(代理组件B)相同的功能。
  3. 更新您的Sling动态包含(SDI)配置以引用代理组件D而不是共享resourceType
  4. 调整Dispatcher规则以从缓存中排除代理组件D,同时允许同一resourceType的其他实例保持缓存状态。

相关阅读

在AEM Foundation教程中设置Sling Dynamic Include

recommendation-more-help
3d58f420-19b5-47a0-a122-5c9dab55ec7f