sling URL 中后缀的用途是什么

What is the use of suffix in sling URLs

Sling 提供了一种简化资源解析的功能。它能够解析我们需要的精确资源表示,这在基于内容的应用程序中非常有用。

但是我无法理解一个问题是后缀的使用。

示例:

http://localhost:4502/content/app/mycomponent.large.html/something.html

这里,"something.html"是后缀。我想知道在什么情况下我会使用后缀?与将信息作为选择器传递相比,我们有什么优势?

这个问题很难回答,但我会试着弄清楚它。

根据最佳做法,不应将选择器视为函数中的输入参数。这意味着,您应该只使用选择器来注册 servlet(或 JSP 文件名),并且选择器应该通知 sling 您想要对给定资源执行的操作或它应该显示的方式。

例如,假设您有页面 /page/a.html,并且您有一些针对移动设备的特殊表示。然后,使用 /page/a 访问它。mobile.html 将以移动友好的方式打开此页面。

另一方面,后缀通常用于为您的 servlet/JSP 页面提供附加信息。只需检查 TouchUI 中的编辑器界面:url 看起来像

localhost:4502/editor.html/content/pageYouEdit.html

因此您始终停留在同一页面/editor.html,但后缀通知编辑界面要编辑哪个页面。

再举个例子: 有一个很好的动态包含内容的库 - https://github.com/Cognifide/Sling-Dynamic-Include。 当为某个组件配置时,在页面加载后,您的组件将包含在 AJAX 调用中,如下所示:

publish/pathToThePage/_jcr_content/pathToTheComponentNode.nocache.html//apps/pathToTheRenderer

在此示例中,您可以看到同时使用了选择器和后缀。选择器告诉我们,我们需要的这个组件的表示有什么特别之处,后缀告诉哪个组件应该呈现请求的数据。

它用于提供可缓存的资源的不同版本。这与称为 "Dispatcher" 的 Apache HTTP 模块配合得很好,Adobe 架构师将在任何 AEM 实施中推荐该模块。

http://me.com/page.html/todays_promotion   <-- cacheable

http://me.com/page.html?todays_promotion   <-- not cacheable

那里的第二个例子,带有一个请求参数,应该被视为一个可变资源,可以根据每个请求产生不同的结果。