在AEM as a Cloud Service中禁用Fastly CDN缓存
Fastly始终是AEM as a Cloud Service内容投放路径的一部分,无法删除。 在资源间缺少Cache-Control或Surrogate-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-Control或Surrogate-Key标头未出现在边缘。- 由于缓存的片段被重复使用,个性化内容显示不一致的行为。
- 当请求通过多个CDN层时,会发生意外重定向。
原因
Fastly是Adobe Experience Manager as a Cloud Service交付架构的一个组成部分,始终保留在请求路径中。 当Cache-Control或Surrogate-Control标头缺失、不完整、被覆盖或在不同资源类型间应用不一致时,Fastly将缓存内容。 某些资源类型(如.vtt files)需要明确的缓存控制规则。 在BYOCDN部署中,X-Forwarded-Host或X-Forwarded-Proto标头不正确可能会创建不同的缓存键,从而导致意外的缓存或重定向行为。
解决方法 resolution
按照以下步骤解决问题
- 查看响应标头,并验证
Cache-Control和Surrogate-Control是否出现在受影响的响应中。 - 确认
Surrogate-Control包含阻止Fastly缓存的值,例如max-age=0或no-store。 - 更新Dispatcher虚拟主机配置,以便在HTML、JSON、Assets和其他资源类型中一致地应用
Cache-Control和Surrogate-Control标头。 为未继承所需标头的资源类型添加显式规则。 - 验证客户管理的CDN是否未覆盖Fastly缓存控制指令。
- 查看CDN日志,并确认客户管理的CDN执行缓存,而Fastly以直通模式运行。
- 如果基于标头的控件未实现预期行为,请在
cdn.yaml中配置绕过缓存的配置。 通过Cloud Manager部署更新的配置,并验证部署是否成功完成。 - 通过确认原始
Host标头和X-Forwarded-Proto标头在整个CDN链中正确转发,验证多CDN路由。 - 审查片段缓存实施并确保不缓存个性化片段。
- 验证动态响应是否返回相应的不可缓存标头。
- 在清除工作流依赖于基于键的失效时配置
Surrogate-Key标头。 - 启用Fastly调试并验证代理密钥是否显示在响应标头中。
- 通过确认Fastly返回PASS、客户管理的CDN按预期进行缓存以及缓存清除操作运行正确来验证最终配置。
相关阅读
- AEMaaCS CDN管理和缓存
- 如何禁用CDN缓存
- Surrogate-Control标头引用
- 在Dynamic Media中使用Open API进行缓存管理
- Dispatcher概述
recommendation-more-help
experience-cloud-kcs-help-kbarticles