2017-09-11 1 views
-1

AEM Je suis en train d'utiliser HTML minification en utilisant la bibliothèque de balises de compresseur html dans Maven https://mvnrepository.com/artifact/com.googlecode.htmlcompressor/htmlcompressor/1.4html minification dans 6.0

i ajouté les dépendances ci-dessous pour 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> 

Ci-dessous mon 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> 

Dans ce j'ai ajouté les lignes de compression html et les taglibs.

<%@ taglib uri="http://htmlcompressor.googlecode.com/taglib/compressor" 
    prefix="compress"%> 
<compress:html removeIntertagSpaces="true" enabled="true" removeComments="false" compressJavaScript="true" yuiJsDisableOptimizations="true"> 

Ci-dessous mon 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> 

J'ai terminé la dans ce domaine.

Après avoir Maven construire clean install Je reçois l'erreur ci-dessous

org.apache.sling.scripting.jsp.jasper.JasperException: La uri absolue: http://htmlcompressor.googlecode.com/taglib/compressor ne peut être résolu dans web.xml ou dans le pot fichiers déployés avec cette application à org.apache.sling.scripting.jsp.jasper.compiler.DefaultErrorHandler.jspError (DefaultErrorHandler.java:51)

J'ai essayé de redémarrer l'instance et rafraîchissant les AEM faisceaux, mais cela n'a pas résolu ce problème. J'essaie d'implémenter la minification HTML sur mon site web AEM. J'ai vérifié le gestionnaire de bibliothèque de jour de HTML CQ mais compresse seulement le CSS et le JS et pas le HTML qui est rendu par l'intermédiaire de JSP dans AEM. Existe-t-il une autre méthode dans AEM qui peut être utilisée ou peut-on utiliser le compresseur html sans avoir l'erreur ci-dessus? S'il vous plaît suggérer et merci à l'avance.

**** New Edition ******

J'ai importé la bibliothèque comme bundle OSGI, mais maintenant il a jeté un transtypage exception.I a constaté que htmlcompressor ne comprimant jsps mais a besoin html pur pour la compression, Le mod de vitesse de page est une alternative possible, mais CSS et JS ont déjà été minifiés par Day CQ HTML Library Manager et nous utilisons également la mise en cache du navigateur en modifiant la configuration de la mise en cache dans httpd.conf. Ma seule exigence est vraiment la minification HTML. Y at-il une bibliothèque qui peut être intégrée avec AEM et utilisée pour la même chose?

Répondre

2

La uri absolue: http://htmlcompressor.googlecode.com/taglib/compressor ne peut être résolu dans web.xml ou dans les fichiers jar déployés avec cette application

Vérifiez que le htmlcompressor taglib est présent dans http://localhost:4502/system/console/status-jsptaglibs. Il semble que le compresseur HTML JAR ne soit pas un bunde OSGi ou que vous ne l'ayez pas importé correctement dans votre projet. Vous ne pouvez pas simplement ajouter une dépendance Maven et espérer que tout fichier JAR fonctionnera dans un conteneur OSGI, mais je ne le couvrirai pas ici car il y a beaucoup d'informations disponibles.

La compression HTML à l'aide d'une bibliothèque de balises ne me semble pas idéale. À mon avis, vous feriez mieux d'installer un module comme Google mod_pagespeed sur le serveur Web assis devant votre instance AEM.

Cela vous évitera de devoir spécifier cette balise dans votre code et d'effectuer des optimisations plus approfondies du balisage rendu (y compris Javascript, etc.).

+0

J'ai essayé d'utiliser le bundle OSGI mais la bibliothèque ne semble pas fonctionner avec les JSP. Pouvez-vous suggérer une bibliothèque alternative qui peut être utilisée avec AEM pour la minification HTML et qui fonctionne avec les JSP et pas seulement le HTML? Je regarde granule https://github.com/JonathanWalsh/Granule mais comment l'intégrerais-je dans AEM? ? –

+0

@AdityaAuradkar Je suis désolé, je ne connais pas les bibliothèques qui feraient cela et je ne sais pas pourquoi vous voudriez. Que se passe-t-il lorsque votre base de code est refactorisée en modèles Sightly? Pour info, vous pouvez simplement configurer mod_pagespeed pour supprimer uniquement les espaces si vous le souhaitez. – mickleroy