2016-12-27 60 views
4

Sling提供了一种功能来简化资源分辨率。它能够解决我们需要的确切资源表示在基于内容的应用程序中非常有用。什么是吊索URL中的后缀

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

实施例:

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

这里, “something.html” 是后缀。我想知道在什么情况下我会去后缀?与将信息作为选择器传递相比,我们获得了什么优势?

回答

6

非常难的问题,但我会尽量澄清一点。

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

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

另一方面,后缀通常用于向servlet/JSP页面提供附加信息。只是检查编辑器界面中头锤:网址看起来像

本地主机:4502/editor.html /内容/ pageYouEdit.html

所以你总是停留在同一个页面/editor.html,但后缀通知编辑界面要编辑的页面。

另一个示例: 有一个很好的动态库包含内容 - https://github.com/Cognifide/Sling-Dynamic-Include。 当它配置了一些组件,然后在页面加载后,您的组件将包含AJAX调用,就像这样:

发布/ pathToThePage/_jcr_content/pathToTheComponentNode.nocache.html //应用程序/ pathToTheRenderer

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

2

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

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

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

第二个例子有,具有请求参数,应被视为可能产生在每个请求不同的结果的变量的资源。