我刚刚更新了CQ5.6实例中的一些javascript文件。我删除了vars / clientlibs文件夹,以便CQ在下一页加载时重新生成相应的文件。当它重新生成它时,它仍然包含原始的javascript。我仔细检查了,创作和发布实例都有新的javascript,所以我不知道它在哪里抓住旧的东西。
那么,CQ在哪里缓存从中生成var文件的文件?
答案 0 :(得分:4)
CQs clientlibs由HtmlLibraryManager缓存。使用jad,JDecompiler来查看它的实现。
我找到的一个解决方法是重命名clientlib的节点。因此,如果它是myClientLib,只需将其重命名为myClientLib_somethingelse,然后它将使用新的js(它清除HtmlLibraryManager的clientlib缓存)。之后你可以重新命名。
<强>更新强>
我忘了提一个可以重建clientlib的url,在这里你也可以使缓存无效:/libs/granite/ui/content/dumplibs.rebuild.html
。它有时会失败,但也许它会起作用。 :d
它也是检查clientlibs的有用网址:/libs/granite/ui/content/dumplibs.html
答案 1 :(得分:2)
删除/ var / clientlibs缓存后,您可能还想尝试从Adobe Granite UI Commons (com.day.cq.cq-widgets)
视图重新启动/system/console/bundles
捆绑包。
该bundle提供com.day.cq.widget.impl.HtmlLibraryManagerImpl
服务,该服务负责编译clientlibs,理论上也可以保存一些内存缓存。
有一点,JSP编译器肯定是这样,删除/ var / classes / org / apache / jsp文件夹不足以强制重新编译而不重新启动JSP脚本支持包。
答案 2 :(得分:0)
这是一个普遍的问题,当CSS / JS在客户端浏览器上缓存时,这将是最糟糕的。我建议在您的站点中使用ACS Commons,Versioned Clientlibs功能在css / js文件中添加版本号。请参阅:http://adobe-consulting-services.github.io/acs-aem-commons/features/versioned-clientlibs.html