【问题标题】:Dynamically Load Field Set - Dispatcher动态加载字段集 - 调度程序
【发布时间】:2020-03-07 09:19:24
【问题描述】:

我有一个文章页面(动态)|从服务中获取数据并在页面上显示文章的内容。它具有某些属性,例如文章名称、上次更新日期等。

此页面已缓存并显示内容。只有最后更新日期经常发生变化。我们有几个解决方案:

  • 使用 SDI,但这会使整个组件不可缓存,但我们希望缓存内容。
  • 使用 Ajax 调用,目前实现纯粹写在后端来获取和渲染数据。再次调用以获取一个字段并在 Date 字段上换行似乎并不明智。

对于只需要非缓存一个字段的后端驱动组件,我们是否有任何其他解决方法?

谢谢,

【问题讨论】:

  • 更新后激活时页面缓存不刷新
  • 页面没有更新,因为我们没有通过创作更改内容,它的动态页面使用通过 Web 服务注入的内容来包装占位符。

标签: caching aem ssi server-side-includes


【解决方案1】:

Dispatcher 将页面的内容作为一个整体缓存。即,作为用于点击页面的 URL 与 AEM 为该 URL 提供的内容之间的映射。在随后对该 URL 的调用中,调度程序会交付缓存的内容。

如果页面的动态部分在 AEM 中解析(通过服务调用)并且最终页面内容从 AEM 呈现(这是静态和动态内容的混合),则调度程序无法知道哪些部分是静态的与动态。它从该 URL 的缓存中提供整个页面。

最好的选择是将静态部分与动态值分开,并使用 AJAX 等机制来合并内容。或者,您可以探索使用 SSI 或 Sling 动态包含选项在调度程序上组装页面并将页面作为一个整体交付。详情请查看https://www.cognifide.com/our-blogs/adobe/sling-dynamic-include/

或者,如果您的用例足够简单,根据设定的频率更新动态内容,您可以使用调度程序的 TTL 功能在一段时间延迟后简单地使页面过期,以便定期缓存新内容。 TTL配置详情请查看https://docs.adobe.com/content/help/en/experience-manager-dispatcher/using/configuring/dispatcher-configuration.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-16
    • 1970-01-01
    相关资源
    最近更新 更多