使用客户端渲染组件的AEM解决方案,用于ESI个性化缓存

当Edge Side Include (ESI)与客户端上渲染的组件一起使用,而不是作为服务器渲染的HTML片段返回时,个性化内容可能无法按预期运行。 将实施与ESI用例的服务器渲染片段端点保持一致,或者对保持客户端渲染的组件使用客户端方法,可帮助解决此问题。

描述 description

环境

Adobe Experience Manager as a Cloud Service

问题/症状

  • 在Adobe Experience Manager as a Cloud Service发布页面上实施个性化内容的ESI后,用户可能会看到意外的缓存行为。
  • 如果匿名用户预热公共页面的缓存,则经过身份验证的用户稍后可能会看到个性化组件的匿名版本,或者可能会出现相反情况。
  • 受影响的组件可能包括标题、订阅区域等项目,或用户上下文可能会发生更改的其他页面元素。
  • 日志或浏览器中不会显示任何明确的错误消息,即使个性化输出未按预期呈现。
  • 您可以通过比较缓存预热后匿名会话和经过身份验证的会话中的相同页面,并检查受影响的组件是在源响应中作为服务器渲染的HTML返回还是稍后由客户端JavaScript渲染来确认问题。

解决方法 resolution

请尝试以下步骤来解决问题:

  1. 检查用于个性化的组件是作为服务器渲染的HTML片段从源返回,还是稍后在JavaScript浏览器中渲染。

  2. 如果您需要ESI来组合个性化内容,请将相关组件公开为可以单独包含的服务器渲染HTML片段。 更新您的ESI或Apache Sling动态包含配置,以使其引用服务器渲染的片段端点。

  3. 如果组件必须保持客户端渲染,请为该组件使用客户端个性化模式,而不是依赖ESI进行组合。

  4. 验证更新的实施。

    • 在匿名会话和经过身份验证的会话中测试页面。
    • 确认每个会话在缓存预热后接收到受影响组件的预期版本。
    • 验证原始响应是否包含预期由ESI处理的组件的片段输出。

相关阅读

recommendation-more-help
experience-cloud-kcs-help-kbarticles