Sling提供了一种简化资源解析的功能。它能够解析我们需要的精确资源表示在基于内容的应用程序中非常有用。
但是我无法理解一个问题是使用后缀。
示例:
http://localhost:4502/content/app/mycomponent.large.html/something.html
在这里," something.html"是后缀。我想知道在什么情况下我会选择后缀?与将信息作为选择器传递相比,我们获得了哪些优势?
答案 0 :(得分:7)
非常难的问题,但我会尝试清理一下。
根据最佳实践,选择器不应被视为函数中的输入参数。这意味着,您应该仅使用选择器来注册servlet(或JSP文件名),并且选择器应该通知吊索您想要对给定资源执行的操作或它应该显示的方式。
例如,让我们想象一下,您有页面/page/a.html并且您有一些移动设备的特殊表示。然后,使用/page/a.mobile.html访问它将以移动设备的方式打开此页面。
另一方面,后缀通常用于向servlet / JSP页面提供附加信息。只需检查TouchUI中的编辑器界面:网址看起来像
本地主机:4502 / editor.html /内容/ pageYouEdit.html
因此,您始终保持在同一页面/editor.html,但后缀会通知编辑界面要编辑的页面。
另一个例子: 有一个很好的库可以动态包含内容 - https://github.com/Cognifide/Sling-Dynamic-Include。 当它为某个组件配置时,在加载页面后,您的组件将包含在AJAX调用中,如下所示:
发布/ pathToThePage / _jcr_content / pathToTheComponentNode.nocache.html //应用/ pathToTheRenderer
在此示例中,您可以看到使用了选择器和后缀。 Selector告诉我们,我们需要的这个组件的表示有什么特别之处,后缀告诉哪个组件应该呈现所请求的数据。
答案 1 :(得分:2)
它用于提供可缓存的不同版本的资源。这与称为“Dispatcher”的Apache HTTP模块非常吻合,Adobe架构师将在任何AEM实现中推荐它。
http://me.com/page.html/todays_promotion <-- cacheable
http://me.com/page.html?todays_promotion <-- not cacheable
那里的第二个例子,带有一个请求参数,应被视为一个可变资源,可以在每次请求时产生不同的结果。