我正在努力提高Adobe cq中的页面性能,并且我看到了各种站点(1,2),其中提到了cq类型节点的channels属性:ClientLibraryFolder
我设置了一个包含 2 个组件(cmpA 和 cmpB)的小示例。两者都具有 cmps.cmp 的类别值,并且位于应用程序目录中。然后,我在 etc 文件夹中创建了另一个类型为 cq:ClientLibraryFolder 的节点,该节点具有 cmps.cmp 的嵌入属性和值为 cmps.all 的类别属性
在我看来,我有以下内容,它从两个组件 css 在其各自的客户端 lib 文件夹中生成一个串联的 css 文件。
<cq:includeClientLib css="cmps.all" />
当我添加 !touch 作为 cmpB 的通道属性,然后覆盖 chrome 中的用户代理到 iPhone 时,cmpB 的 css 仍然是串联的。
- localhost:4502/libs/cq/ui/content/dumplibs.html 验证通道属性是否设置为 !touch
- 我已经通过添加一个控制台来确认当前频道是触摸的.log在 etc/clientlibs/foundation/librarymanager/DefaultChannelDetector 中.js
- 在 url 中添加 ?debug=true .css 确认包含来自两个客户端库的 css
我想使用 channels 属性来逐步淘汰某些 css(并最终淘汰给定某些用例的 js)文件,同时不要像文档模糊建议的那样使用额外的逻辑使标记过于复杂。我的目标是我的最终结果是一个单一的css文件(通过配置管理器(服务器/系统/控制台/配置Mgr)中的Day CQ HTML库管理器缩小和压缩)。
我是否错误地使用了通道属性?它甚至意味着以我使用它的方式使用吗?任何见解将不胜感激。
clientlib 节点上设置channels
属性。 如果你想为一个特定的通道提供特殊的CSS/JS,你需要至少创建2个客户端库:
- 第一个客户端lib将具有
categories=[cmps.all]
- 第二个客户端lib将具有
categories=[cmps.all]
和channels=[!touch]
第一个将始终加载 CMPS.all,而第二个将仅加载非触摸通道。