首页 > 解决方案 > 在调度程序中处理 AEM 缓存的最佳方法是什么?

问题描述

我最近遇到了需要手动清除调度程序缓存的情况。例如,如果我正在修改任何 Js/css 文件,我需要手动清除调度程序缓存以获取那些修改后的新 Js/css,否则它将服务于旧版本的代码。我刚刚听说 ACS 开发了版本 clientlib,它可以帮助我们进行版本控制。我对此有很多疑问。

在版本 clientlib 之前,AEM 是如何管理的?AEM 没有智能管理版本化的客户端库吗?处理方式是否正确?在清除那些 JS/css 文件之前,我们可以创建一个脚本来备份现有文件吗?我们还有哪些其他选择?

标签: apachecachingaemdispatcher

解决方案


版本化的 clientlib 是正确的解决方案。但是你需要更多:

回答您的疑问:

  • 在版本 clientlib 之前,AEM 是如何管理的?正如@Subhash 指出的那样,它是产品部署脚本(Bamboo 或 Jenkins)的一部分,用于在客户端库更改时清除调度程序缓存。
  • AEM 没有智能管理版本化的客户端库吗?- 这与任何 cms 工具相同。缓存策略必须是 http 服务器而不是 AEM 的责任。此外,当您部署 js 代码更改时,您需要清除调度程序缓存以获取页面反映新的 js 更改。
  • 处理方式是否正确?对于客户端破坏 - 版本化的客户端库是 100% 万无一失的技术。对于调度程序缓存破坏,您将需要不同的方法。
  • 我们可以创建一个脚本,同时在清除那些 JS/css 文件之前备份现有的吗?应该是 Jenkins/Bamboo 作业中定义的 CI 流程的一部分。不是 AEM 的责任。
  • 我们还有哪些其他选择?- 对于调度程序缓存清除,请尝试dispatcher-flush-rules。您可以配置当 /etc 设计路径发布时,它们应该自动清除整个树,以便后续请求将命中发布者并获取更新的客户端库。

推荐的:

  • 使用版本化的 Clientlibs + CI 驱动的调度程序缓存清除。

由于客户端库由 IT 团队修改并需要部署,因此将其作为 CI 过程的一部分以清除缓存。调度程序刷新规则可能会有所帮助。但是在生产中修改 js/css 并点击发布按钮并不是用例。生产部署周期应执行此任务。Dispatcher缓存清除脚本参考链接:1.Adobe文档2.Jenkins方式3.Bamboo方式


推荐阅读