在我的项目中,有一些示例是组件使用服务器端指令来说明包含/排除组件。很少有地方,适当的sightly / JSP代码用于相同的目的。例如:
<c:if test="${authorMode}">
<cq:include path="headerpar" resourceType="foundation/components/iparsys"/>
</c:if>
<c:if test="${not authorMode}">
<!--#include virtual="/content/myapp/${lang}/global/customer/header.html"--
</c:if>
从基础知识我了解Server Side指令在Apache本身得到解决,而Sightly / Handlebar代码在Publisher处理。使用指令编码是否有好处?如果是,那么很多代码可以转移到服务器端脚本,因为它减少了另一层,而Apache与发布者相比要快得多?为什么Adobe推广他们的脚本而不是促进使用服务器端指令进行编写?
答案 0 :(得分:2)
SSI包含在apache上解析,而cq:包含在CQ中。使用SSI需要您更多的知识,以便您知道自己在做什么
如果您正确使用SSI,您可以通过多种方式使用SSI包含(主要是按照您的建议使用性能)。
假设您的页眉和页脚对于每个页面都相同但包含繁重的逻辑(导航,crx树遍历等)。在这种情况下,如果您正确配置调度程序缓存,则标题实际上只会呈现一次(对于第一页),如果用户请求另一个具有相同标题的页面,则只需从调度程序缓存中提取
假设您有一个主要的宣传册页面,但有些动态组件也可以缓存部分页面并拒绝其他人的缓存 - 再次,您必须正确配置您的调度程序
假设您拥有特定于用户的内容,您还可以缓存部分页面并动态呈现部分页面(这是Sling Dynamic Include的用途 - &gt; https://github.com/Cognifide/Sling-Dynamic-Include)
所以我肯定会使用SSI包含在您网站上重复使用的特定页面片段,或者对于不同的用户有不同的用途,例如一些页眉,页脚或类似的内容#34;欢迎用户&#39; ABC&# 39;&#34 ;.我不会对常规内容这样做,因为它只会缓存在html页面中。