apache - 在调度程序中处理 AEM 缓存的最佳方法是什么?
问题描述
我最近遇到了需要手动清除调度程序缓存的情况。例如,如果我正在修改任何 Js/css 文件,我需要手动清除调度程序缓存以获取那些修改后的新 Js/css,否则它将服务于旧版本的代码。我刚刚听说 ACS 开发了版本 clientlib,它可以帮助我们进行版本控制。我对此有很多疑问。
在版本 clientlib 之前,AEM 是如何管理的?AEM 没有智能管理版本化的客户端库吗?处理方式是否正确?在清除那些 JS/css 文件之前,我们可以创建一个脚本来备份现有文件吗?我们还有哪些其他选择?
解决方案
版本化的 clientlib 是正确的解决方案。但是你需要更多:
- 版本化的Clientlibs是一种客户端缓存清除技术。用于破坏浏览器缓存。
- 它不会破坏调度程序缓存。除非手动清除,否则在调度程序处缓存的页面将继续提供。
- 有关类似问题,请参阅此处。
回答您的疑问:
- 在版本 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方式
推荐阅读
- java - JDBC连接尝试与资源使用
- python - 如何使用 Python 从 Excel 导出中的超链接下载文件
- javascript - 在 Nestjs 中构建存储库和服务的最佳方式
- regex - 正则表达式解析多行字符串
- google-cloud-platform - 在 BigQuery 中使用 BYTES?
- tailwind-css - Tailwind - 如果我使用图层,css 规则是不可见的
- bluej - bluej 语法高亮的颜色在哪里定义?
- javascript - Material UI:解析错误:标识符“Switch”已被声明
- zsh - iTerm2鼠标报告输出符号
- javascript - 从 axios Promise 中获取返回值