在AEM as a Cloud Service中使Dispatcher缓存失效,以获取更新的/etc.clientlibs资源
本文介绍如何通过配置Dispatcher缓存操作并使用缓存嵌套技术,确保在Adobe Experience Manager as a Cloud Service中部署后提供/etc.clientlibs下更新的静态资源。
描述 description
环境
Adobe Experience Manager as a Cloud Service (AEMaaCS)(所有版本)
症状
/etc.clientlibs下更新的静态资源(如JavaScript文件)在部署后不会立即显示。- 浏览器、Dispatcher或CDN将继续提供以前版本的文件。
原因
Dispatcher和CDN缓存会保留具有长生命周期缓存标头的静态资源,除非您使它们失效或将其刷新。 除非配置缓存操作,否则Cloud Manager部署不会自动清除/etc.clientlibs的这些缓存。 要立即传播更新,请使用基于URL的缓存无效。
解决方法 resolution
请按照以下步骤解决问题:
-
在Cloud Manager管道中配置Dispatcher缓存操作:
-
在Cloud Manager中,编辑部署管道。
-
转到Dispatcher配置部分,然后选择配置。
-
使用以下设置添加缓存操作:
- 路径:
/etc.clientlibs/<your-project>/clientlibs/<your-clientlib>/* - 类型:选择 无效 以将缓存的内容标记为过时,或选择 刷新 以将其删除。
- 路径:
-
选择添加路径、应用,然后保存管道配置。
-
运行管道以使指定的路径失效或进行刷新。
-
-
对静态资源使用基于URL的缓存无效:
- 更新静态JavaScript或CSS文件时,请使用版本化的文件名,如
swiper-bundle-v14.min.js。 - 或者,附加查询参数,如
swiper-bundle.min.js?v=20240819。 - 更改URL可确保Dispatcher和CDN将更新后的文件视为新资源。
- 更新静态JavaScript或CSS文件时,请使用版本化的文件名,如
-
查看
Cache-Control标头:- 如果您使用长期TTL(如
max-age=31536000, immutable),请对资源URL进行版本控制。 - 如果您没有对URL进行版本控制,请使用较短的TTL并从标头中删除
immutable。
- 如果您使用长期TTL(如
-
通过代理为客户端库提供服务:
- 通过
allowProxy=true的AEM客户端库为JavaScript和CSS提供服务。 - 避免硬编码原始URL,如
/etc.clientlibs/.../resources/*.js。
- 通过
-
验证更新:
- 管道执行完成后,访问更新的资源URL。
- 确认资源包含最新更改。
- 查看响应标头以验证预期的缓存行为。
recommendation-more-help
experience-cloud-kcs-help-kbarticles