3

我正在努力提高 adobe cq 中的页面性能,并且我已经看到各种站点(12)提到了cq:ClientLibraryFolder类型节点的通道属性

我已经建立了一个包含 2 个组件(cmpAcmpB)的小示例。两者都具有cmps.cmp的类别值,并且位于应用程序目录中。然后,我在etc文件夹中创建了另一个类型为cq:ClientLibraryFolder的节点,该节点具有cmps.cmp的嵌入属性和值为cmps.all的类别属性

在我看来,我有以下内容,这会导致来自各自客户端 lib 文件夹中的两个组件 css 的连接 css 文件。

<cq:includeClientLib css="cmps.all" />

当我添加!touch作为cmpB的channels属性然后将 chrome 中的 userAgent 覆盖到 iPhone 时,cmpB的 css仍然是连接的。

  1. localhost:4502/libs/cq/ui/content/dumplibs.html 验证 channels 属性设置为 !touch
  2. 我已经通过在etc/clientlibs/foundation/librarymanager/DefaultChannelDetector.js中添加一个 console.log 来确认当前频道是touch
  3. 在 url 中加载 clientlibs.css 时添加 ?debug=true 确认包含来自两个 clientlibs 的 css

在给定某些用例的情况下,我想使用 channels 属性逐步淘汰某些 css(最终是 js)文件,同时又不会像文档模糊暗示的那样使用额外的逻辑使标记过于复杂。我的目标是我的最终结果是单个 css 文件(通过配置管理器(服务器/系统/控制台/configMgr)中的 Day CQ HTML 库管理器进行压缩和压缩。

我是否错误地使用了频道属性?它甚至意味着以我使用它的方式使用吗?任何见解将不胜感激。

4

1 回答 1

2

channels属性必须在 clientlib 节点上设置。如果您想为特定频道提供特殊的 css/js,则需要创建至少 2 个客户端库:

  1. 第一个 clientlib 会有categories=[cmps.all]
  2. 第二个 clientlib 将拥有categories=[cmps.all]channels=[!touch]

第一个总是为 cmps.all 加载,而第二个只会为非触摸通道加载。

于 2013-09-15T04:41:49.220 回答