【问题标题】:How does sling selectors work?吊索选择器如何工作?
【发布时间】:2016-08-31 06:16:40
【问题描述】:

我正在研究 HTTP caching 并实现缓存清除,我正在使用 ACS Versioned ClientLibs。现在,当 js 文件是 clientlib 的一部分时,它可以正常工作。例如<script src="/etc/designs/myapp/clientlibs/base.js"> 有效。但是当我尝试访问库中的单个 js 时,它不起作用。例如<script src="/etc/designs/myapp/clientlibs/base/js/app1.js"> 失败。原因是作为 sling 选择器添加的 MD5 哈希在它是 clientlib js 时被解析。但是单独调用 js 时选择器没有得到解决。 </base.hash.js> 有效,但 </base/js/app1.hash.js> 失败。

AEM 如何知道在调用 clientlibs 时解析选择器而在调用单个 js 时不解析?

我需要选择器专门工作的原因是,根据PageSpeed,大多数代理不缓存静态引用?参数。并要求删除查询参数。所以我不能为缓存破坏添加查询参数。

【问题讨论】:

  • 不是 100% 确定,因此仅作为评论而不作为答案:组合的 js 文件在返回之前由 AEM 处理,因此会考虑哈希。单个文件似乎作为纯二进制文件发送回来,没有任何处理。
  • 是的.. 那也是我推断的。但是,如果有人阐明正在发生的事情,可能会想出一些修补程序来解决这个问题。

标签: aem sling client-library


【解决方案1】:

/etc/designs/myapp/clientlibs/base 是一个 cq:ClientLibraryResource

/etc/designs/myapp/clientlibs/base/js/app.js 是一个 nt:file 资源。

没有资源 .../base/js/app 你不能用选择器(app.hash.js)请求这个资源

【讨论】:

  • 这是我能得到的最接近的答案,即资源解析器只有在 HTMLLibrary 时才能解析吊索选择器。在 jcr:primaryType:nt:file 的情况下,它无法解析为 HTMLLibrary,资源解析器只是将全文返回为已解析,最终失败。我的问题的解决方案是编写调度程序重写器以去除选择器。
猜你喜欢
  • 2018-10-17
  • 2014-03-06
  • 2022-10-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-19
  • 1970-01-01
  • 2015-06-21
相关资源
最近更新 更多