我正在尝试使用Maven中的html压缩器标记库来进行HTML缩小https://mvnrepository.com/artifact/com.googlecode.htmlcompressor/htmlcompressor/1.4
我将以下依赖项添加到pom.xml
<dependency>
<groupId>com.googlecode.htmlcompressor</groupId>
<artifactId>htmlcompressor</artifactId>
<version>1.4</version>
</dependency>
<dependency>
<groupId>com.yahoo.platform.yui</groupId>
<artifactId>yuicompressor</artifactId>
<version>2.4.6</version>
</dependency>
以下是我的header.jsp
<%@include file="/apps/itchotelsonline/components/global.jsp"%>
<%@page import ="com.itc.hotels.services.ItcOnlineConfigurationService" %>
<%@ taglib uri="http://htmlcompressor.googlecode.com/taglib/compressor"
prefix="compress"%>
<%
ItcOnlineConfigurationService onlineConfigService = sling.getService(com.itc.hotels.services.ItcOnlineConfigurationService.class);
if(onlineConfigService != null){
String rootPagePath = onlineConfigService.getRootPagePath();
slingRequest.setAttribute("rootPagePath",rootPagePath);
}
%>
<compress:html removeIntertagSpaces="true" enabled="true" removeComments="false" compressJavaScript="true" yuiJsDisableOptimizations="true">
<cq:include path="${rootPagePath}/jcr:content/header" resourceType="itchotelsonline/components/content/header"/>
<div class="modal fade in new-modal" id="loginOverlayPopup" tabindex="-1" role="dialog" aria-labelledby="" aria-hidden="true" style="display: none;">
<div class="modal-dialog">
<!-- Modal content-->
<div class="modal-content">
<div class="modal-body text-center">
<center>
<p><strong id="loginInactivityPopUp"> You are Logged Out due to Inactivity! </strong></p>
</center>
<div class="clear"></div>
<div class="newBook clearfix">
<button type="button" class="btn btn-default" id="loginInactivityBtn" data-dismiss="modal" onclick="resetLoginInactivityPopUp();">Close</button>
</div>
</div>
</div>
</div>
</div>
在其中我添加了压缩html行和taglib。
<%@ taglib uri="http://htmlcompressor.googlecode.com/taglib/compressor"
prefix="compress"%>
<compress:html removeIntertagSpaces="true" enabled="true" removeComments="false" compressJavaScript="true" yuiJsDisableOptimizations="true">
以下是我的footer.jsp
<%@include file="/apps/itchotelsonline/components/global.jsp"%>
<%@page import ="com.itc.hotels.services.ItcOnlineConfigurationService" %>
<%
ItcOnlineConfigurationService onlineConfigService = sling.getService(com.itc.hotels.services.ItcOnlineConfigurationService.class);
if(onlineConfigService != null){
String rootPagePath = onlineConfigService.getRootPagePath();
pageContext.setAttribute("rootPagePath",rootPagePath);
}
%>
<cq:include path="${rootPagePath}/jcr:content/footer" resourceType="itchotelsonline/components/content/footer"/>
</compress:html>
我结束了这个。
在给maven build clean安装后,我收到以下错误
org.apache.sling.scripting.jsp.jasper.JasperException:无法在web.xml或使用此应用程序部署的jar文件中解析绝对uri:http://htmlcompressor.googlecode.com/taglib/compressor at org.apache.sling.scripting.jsp.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:51)
我尝试重新启动AEM实例并刷新捆绑包,但尚未解决此问题。 我正在尝试在我的AEM网站上实现HTML缩小。我已经检查了Day CQ HTML Library Manager,但它只压缩CSS和JS,而不是压缩通过AEM中的JSP呈现的HTML。 在AEM中是否有可以使用的替代方法,或者可以使用html压缩器而不会出现上述错误? 请提前建议并提前致谢。
****新编辑******
我将这个库导入为OSGI包但现在它引发了一个类型转换异常。我发现htmlcompressor没有压缩jsps但需要纯html进行压缩,页面速度mod是一种可能的选择,但CSS和JS已经被缩小了Day CQ HTML Library Manager,我们还通过更改httpd.conf中的缓存配置来利用浏览器缓存。我唯一的要求是真正的HTML缩小。是否有任何可以与AEM集成并且用于相同的库?
答案 0 :(得分:2)
无法在web.xml或使用此应用程序部署的jar文件中解析绝对uri:http://htmlcompressor.googlecode.com/taglib/compressor
检查http://localhost:4502/system/console/status-jsptaglibs中是否存在htmlcompressor
taglib。看起来HTML压缩器JAR不是OSGi Bunde,或者您还没有将它正确导入到您的项目中。你不能只是添加一个Maven依赖项并期望任何JAR在OSGI容器中工作,但我不会在这里覆盖它,因为那里有大量的信息。
使用标记库压缩HTML对我来说听起来并不理想。在我看来,最好在位于AEM实例前面的Web服务器上安装Google mod_pagespeed之类的模块。
它将为您省去必须在代码中指定该标记的麻烦,并且还将对渲染的标记执行更彻底的优化(包括内联Javascript等)。