我最近刚刚更新了 CQ5.6 实例中的一些 javascript 文件。我删除了 vars/clientlibs 文件夹,以便 CQ 在下一页加载时重新生成适当的文件。当它重新生成它们时,它仍然包含原始的 javascript。我仔细检查了一下,创作和发布实例都有新的 JavaScript,所以我不知道它在哪里保留旧的东西。

那么,CQ 在哪里缓存它生成 var 文件的文件呢?

没有正确的解决方案

其他提示

CQ 的 clientlibs 被缓存 Html库管理器. 。使用jad、JDecompiler看看它的实现。

我发现的一种解决方法是重命名 clientlib 的节点。因此,如果它是 myClientLib,只需将其重命名为 myClientLib_somethingelse,然后它将使用新的 js (它会清理 HtmlLibraryManager 的 clientlib 缓存)。之后您可以将其重命名回来。

更新:

我忘了提到一个 url,您可以在其中重建 clientlibs,在这里您还可以使缓存无效: /libs/granite/ui/content/dumplibs.rebuild.html. 。有时会失败,但也许会起作用。:D

它也是检查 clientlibs 的有用 url: /libs/granite/ui/content/dumplibs.html

删除 /var/clientlibs 缓存后,您可能还想尝试重新启动 Adobe Granite UI Commons (com.day.cq.cq-widgets) 捆绑从 /system/console/bundles 看法。

该捆绑包提供了 com.day.cq.widget.impl.HtmlLibraryManagerImpl service,它负责编译 clientlibs,理论上也可以保存一些内存缓存。

在某一时刻,这对于 JSP 编译器来说绝对是正确的,其中删除 /var/classes/org/apache/jsp 文件夹不足以在不重新启动 JSP 脚本支持包的情况下强制重新编译。

这是一个通用问题,当CSS / JS缓存在客户端浏览器上时,它将是最糟糕的。我建议在网站中使用ACS Commons,Versioned ClientLibs功能,在CSS / JS文件中添加版本号。请参阅: http:// Adobe-Consulting-services.github.io/acs-aem-commons/features/versioned-clientlibs.html

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top