在AEM as a Cloud Service中禁用Fastly CDN缓存

Fastly始终是AEM as a Cloud Service内容投放路径的一部分,无法删除。 在资源间缺少Cache-ControlSurrogate-Control标头、被覆盖或不一致地应用时,会发生意外的缓存。 在使用客户管理的CDN的环境中,不正确的转发标头也会影响缓存行为和重定向处理。

要解决此问题,请正确配置cache-control标头,验证CDN设置,并验证Fastly传递行为。

描述 description

环境

  • Adobe Experience Manager as a Cloud Service (AEMaaCS)
  • 自带CDN (BYOCDN)部署
  • Dispatcher配置
  • 使用cdn.yaml的CDN配置

问题/症状

  • Fastly x-cache标头在需要绕过缓存时显示MISS或SYNTH。
  • Fastly会缓存特定文件类型,尽管已配置缓存控制标头。
  • Surrogate-ControlSurrogate-Key标头未出现在边缘。
  • 由于缓存的片段被重复使用,个性化内容显示不一致的行为。
  • 当请求通过多个CDN层时,会发生意外重定向。

原因

Fastly是Adobe Experience Manager as a Cloud Service交付架构的一个组成部分,始终保留在请求路径中。 当Cache-ControlSurrogate-Control标头缺失、不完整、被覆盖或在不同资源类型间应用不一致时,Fastly将缓存内容。 某些资源类型(如.vtt files)需要明确的缓存控制规则。 在BYOCDN部署中,X-Forwarded-HostX-Forwarded-Proto标头不正确可能会创建不同的缓存键,从而导致意外的缓存或重定向行为。

解决方法 resolution

按照以下步骤解决问题

  1. 查看响应标头,并验证Cache-ControlSurrogate-Control是否出现在受影响的响应中。
  2. 确认Surrogate-Control包含阻止Fastly缓存的值,例如max-age=0或no-store。
  3. 更新Dispatcher虚拟主机配置,以便在HTML、JSON、Assets和其他资源类型中一致地应用Cache-ControlSurrogate-Control标头。 为未继承所需标头的资源类型添加显式规则。
  4. 验证客户管理的CDN是否未覆盖Fastly缓存控制指令。
  5. 查看CDN日志,并确认客户管理的CDN执行缓存,而Fastly以直通模式运行。
  6. 如果基于标头的控件未实现预期行为,请在cdn.yaml中配置绕过缓存的配置。 通过Cloud Manager部署更新的配置,并验证部署是否成功完成。
  7. 通过确认原始Host标头和X-Forwarded-Proto标头在整个CDN链中正确转发,验证多CDN路由。
  8. 审查片段缓存实施并确保不缓存个性化片段。
  9. 验证动态响应是否返回相应的不可缓存标头。
  10. 在清除工作流依赖于基于键的失效时配置Surrogate-Key标头。
  11. 启用Fastly调试并验证代理密钥是否显示在响应标头中。
  12. 通过确认Fastly返回PASS、客户管理的CDN按预期进行缓存以及缓存清除操作运行正确来验证最终配置。

相关阅读

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