Flush Agent 不清除代理 clientlib 路径

Flush Agent doesnt clear proxy clientlib paths

我正在使用 AEM 6.3 并为客户端库使用 allowProxy。正如预期的那样,调度程序将 clientlibs 缓存在路径 /cache/etc.clientlibs/myapp/clientlibs/clientlib.css 下。但是对应的jcr路径会是/apps/myapp/clientlibs/clientlib/mystyle.css

因此,当 clientlibs 在部署期间被修改并发布时,它们不会自动清除各自的 apache 缓存。今天我们手动执行此操作。 另外,我们使用自动缓存清除器 VersionedClientlibs。所以我们永远不会加载过时的 clientlib。但是,如果不进行手动清除,apache 缓存会堆积成千上百个过时的 clientlib 文件。

在版本控制和代理允许的 apache 上清除过时的 clientlibs 的推荐方法是什么?

这是一个已知的限制,我们也在每次部署后刷新整个 /etc.clientlib 路径。我们通过 ACS dispatcher-flush-ui 执行此操作。

Typically, when deploying to production, you'd flush the whole or part of the dispatcher cache anyway to make sure component changes reflect. So adding this task to that process is easy.

如果你真的想让它成为一个自动过程,你可以:

  1. 写一个ResourceChangeListener example here or a a JCR EventListener example: here。并基本上监听 clientlib 路径的变化并复制相应的 /etc.clientlibs/ 路径
  2. 写一个ReplicationPathTransformer,这样当你的clientlib路径被复制时,你可以将其转换为相应的/etc.clientlib/路径,以便在调度程序中刷新。

希望对您有所帮助。