Configuration de la mise en cache de fragment JSP basée sur le comportement d'une activité

Vous pouvez améliorer les performances par la mise en cache d'un emplacement e-Marketing de la vitrine sur la base du comportement d'une activité, y compris les activités Web et le contenu marketing.

Avant de commencer

  • Activez la fonction d'amélioration de magasin.

Pourquoi et quand exécuter cette tâche

Pour configurer ce type de mise en cache, les ID de dépendance sont définis de manière dynamique pour invalider le fichier JSP lorsque la définition d'un emplacement e-Marketing change (modifications de l'activité Web, modifications de contenu par défaut, modifications de contenu, modifications produit et modifications de catégorie). Une limite de durée de page est définie pour invalider la page la prochaine fois qu'elle est planifiée pour être ajoutée ou supprimée de l'emplacement e-Marketing. Une fois la page rechargée, le nouvel ensemble d'activités actives définies pour l'emplacement e-Marketing devient actif.

Procédure

  1. Ouvrez le fichier de configuration cachespec.xml dans le répertoire suivant :
    • workspace_dir/crs-web/WebContent/WEB-INF/
  2. Pour chaque fragment de code JSP d'emplacement e-Marketing, incluez une entrée de cache similaire au code suivant.

    Assurez-vous que les éléments suivants sont spécifiés :

    • La propriété do-not-consume est true.
    • La propriété do-not-cache est true.
    • metadatagenerator est spécifié comme com.ibm.commerce.marketing.cache.EMarketingSpotMetaDataGenerator.
    <cache-entry>
    	<class>servlet</class>
    	<name>/Madisons/Snippets/Marketing/ESpot/ContentAreaESpot.jsp</name>		
    	<property name="do-not-consume">true</property>
    	<property name="do-not-cache">true</property>
    		<property name="save-attributes">false</property>
    		<cache-id>
    			<component id="emsName" type="parameter">
    				<required>false</required>
    			</component>
    			<component id="DC_storeId" type="attribute">
    				<required>false</required>
    			</component>
    			<component id="DC_lang" type="attribute">
    				<required>false</required>
    			</component>
    			<metadatagenerator>com.ibm.commerce.marketing.cache.EMarketingSpotMetaDataGenerator</metadatagenerator>
    		</cache-id>
    </cache-entry>
  3. Incluez les entrées de cache définies dans le fichier cachespec.xml qui se trouve dans le répertoire suivant :
    • HCL Commerce DeveloperWCDE_installdir\samples\dynacache\marketing\
      HCL Commerce Version 9.1.13.0 or laterRemarque : Ces informations s'appliquent uniquement aux versions antérieures à HCL Commerce version 9.1.13.0. A partir de HCL Commerce version 9.1.13.0, les règles de cache de la commande marketing sont déplacées vers le fichier cachespec.xml contenu dans le fichier InitializationServlet.war utilisé par le serveur de transactions. Si les règles de cache marketing ont été introduites précédemment à l'aide d'une personnalisation manuelle, elles doivent être supprimées afin que les règles InitializationServlet soient prioritaires.
    Remarque : Si vous avez préalablement inclus ces entrées de cache, la seule modification requise est l'inclusion de la méthode getMarketingSpotBehavior en tant que composant cache dans les entrées de cache de la commande FilterXXXCmdImpl.
    <!-- NEW: for e-Marketing Spot caching -->
                <component id="getMarketingSpotBehavior" type="method">
                   <value>1</value>
                </component>
  4. Enregistrez et fermez le fichier cachespec.xml.
  5. Dans chaque fragment de code JSP d'un emplacement e-Marketing, recherchez le code suivant :
    <%
       /* Get the e-Marketing Spot name from the request parameters, and decode it in case it has been encoded. */
       String emsName = request.getParameter("emsName");
       if (emsName != null) {
       	emsName = java.net.URLDecoder.decode(emsName, "UTF-8");
    	  request.setAttribute("emsName", emsName);
       }
    Ajoutez le code suivant après ce code.
    	Object DM_marketingSpotBehavior = request.getAttribute("DM_emsBehavior-" + emsName);
      	 if (DM_marketingSpotBehavior != null) 
    	{request.setAttribute("DM_marketingSpotBehavior", DM_marketingSpotBehavior.toString());}
  6. Dans chaque fragment de code JSP d'un emplacement e-Marketing, recherchez le code suivant :
    <wcf:getData type="com.ibm.commerce.marketing.facade.datatypes.MarketingSpotDataType" var="marketingSpotDatas" expressionBuilder="findByMarketingSpotName">
    
                <%-- the name of the e-Marketing Spot --%>
                <wcf:param name="DM_EmsName" value="${emsName}" />
    Ajoutez le code suivant après ce code.
    <wcf:param name="DM_marketingSpotBehavior" value="${requestScope.DM_marketingSpotBehavior}"/>
  7. Dans chaque fragment de code JSP d'un emplacement e-marketing, recherchez la fin de la balise <getData> :
    </wcf:getData>
    </c:otherwise>
    </c:choose>
    Ajoutez le code suivant après ce code.
    <wcf:eMarketingSpotCache marketingSpotData="${marketingSpotDatas}" contentDependencyName="contentId" catalogEntryDependencyName="productId"  categoryDependencyName="categoryId" />
    En ajoutant ce code, le fragment JSP peut utiliser la balise eMarketingSpotCache pour déterminer dynamiquement si le fragment JSP peut être mis en cache. Pour plus d'informations sur cette balise, voir Balise : eMarketingSpotCache.
    Remarque : Définissez les valeurs de catalogEntryDependencyName et categoryDependencyName en fonction des noms utilisés dans les règles d'invalidation du fichier cachespec.xml pour invalider les produits et les catégories.
  8. Enregistrez et fermez le fichier de fragment de code JSP de chaque emplacement e-Marketing.
  9. Si le filtrage est activé afin de rendre une action dynamique, il est nécessaire de configurer le fichier wc-admin-component.xml pour définir l'action en tant que dynamique. Pour plus d'informations sur la configuration du fichier wc-admin-component.xml, voir Modification des propriétés dans le fichier de configuration du composant marketing (wc-admin-component.xml).
    <!-- E-MARKETING SPOT CACHING BEHAVIOR -->
    	  <!--  Setting to specify that the Display Catalog Entry Action should be considered dynamic. This means the 
    	        marketing engine should evaluate if the catalog entry can be displayed to each individual customer.
    	        For example, you would set this if the catalog entry filter is enabled to remove recommendations
    	        in the customer's shopping cart, purchase history, or based on inventory level. 
    	        Set the value to 1 if the action behavior is dynamic.
    	  -->
      	  <_config:property name="catalogEntryActionBehavior" value="0"/>
    
    	  <!--  Setting to specify that the Display Category Action should be considered dynamic. This means the 
    	        marketing engine should evaluate if the category can be displayed to each individual customer.
    	        Set the value to 1 if the action behavior is dynamic.
    	  -->
      	  <_config:property name="categoryActionBehavior" value="0"/>	
    
    	  <!--  Setting to specify that the Display Content Action should be considered dynamic. This means the 
    	        marketing engine should evaluate if the catalog entry can be displayed to each individual customer.
    	        For example, you would set this if the content filter is enabled to remove recommendations
    	        if the customer is not in a segment associated with a promotion, or is not entitled to the
    	        promoted products. 
    	        Set the value to 1 if the action behavior is dynamic.
    	  -->
      	  <_config:property name="contentActionBehavior" value="0"/>
    Le comportement des filtres correspondants est spécifié dans le tableau ci-après :
    Objet Filtre Comportement
    Entrée de catalogue removeIfNoInventory Dépend du besoin métier – définir sur dynamic s'il évalue chaque demande. Sinon, ce filtre peut dépendre d'un dépassement du délai d'attente de page.
    Entrée de catalogue removeIfExistInShopcart Dynamic – à évaluer pour chaque client
    Entrée de catalogue removeIfExistInPurchaseHistory Dynamic – à évaluer pour chaque client
    Entrée de catalogue removeIfPastEndDate Dépend du besoin métier – définir sur dynamic s'il évalue chaque demande. Sinon, ce filtre peut dépendre d'un dépassement du délai d'attente de page.
    Entrée de catalogue removeIfNotInCurrentCatalog Static
    Catégorie removeIfNotInCurrentCatalog Static
    Contenu removeIfPromotionNotAvailable Dépend du besoin métier – définir sur dynamic s'il évalue chaque demande. Sinon, ce filtre peut dépendre d'un dépassement du délai d'attente de page.
    Le contenu removeIfPromotionBeforeStartDate Dépend du besoin métier – définir sur dynamic s'il évalue chaque demande. Sinon, ce filtre peut dépendre d'un dépassement du délai d'attente de page.
    Contenu removeIfMemberNotInPromotionSegment Dynamic – à évaluer pour chaque client
    Contenu removeIfPromotionNotEntitledCatalogEntryOrCategory Dynamic – à évaluer pour chaque client
  10. Facultatif : Certains paramètres facultatifs pour un emplacement e-Marketing peuvent être configurés comme suit :
    • Par défaut, si le fichier JSP d'un emplacement e-Marketing inclus dans une page mise en cache par un servlet, le fichier JSP de l'emplacement e-Marketing de type statique est consommé par la page parente. Si vous voulez toujours mettre en cache le fichier JSO d'emplacement e-marketing séparément, définissez un paramètre cacheWithParent sur la valeur false.
    • Si un emplacement e-marketing spécifique doit être spécifié en tant que static ou dynamic sans reposer sur la détermination automatique, transmettez le paramètre marketingSpotBehavior lors de l'importation du fragment de code JSP de l'emplacement e-marketing. Spécifiez la valeur 0 pour le comportement statique et la valeur 1 pour le comportement dynamique. Le Responsable marketing peut aussi préciser si le contenu du marketing est statique ou dynamique dans le Centre de gestion. Pour plus d'informations, voir Création d'un contenu marketing à afficher sur des pages de magasin.
    • Le délai d'attente défini pour le fragment mis en cache est la date/heure la plus proche des dates de début ou de fin d'une activité planifiée pour l'emplacement e-Marketing après la date/heure en cours. Ce délai n'est défini que si la date/heure est antérieure au délai en cours de la page. Généralement, le délai est défini dans le fichier cachespec.xml, mais il peut aussi être spécifié lors de l'inclusion du fichier JSP de l'emplacement e-marketing.

    Voici un exemple de définition des paramètres facultatifs pour un emplacement e-Marketing. Le paramètre cacheWithParent est défini en cache pour le fichier ContentAreaESpot.jsp séparément de la page d'accueil. Le paramètre marketingSpotBehavior est configuré de sorte que l'emplacement est toujours en cache et il ne vérifie pas le comportement des activités au niveau de l'emplacement e-marketing. Le paramètre pageTimeLimit est configuré de sorte que la limite de temps par défaut est définie sur une heure.

    <c:import url="${jspStoreDir}Snippets/Marketing/ESpot/ContentAreaESpot.jsp">
                            <c:param name="emsName" value="HomePageRow1Ads" />
                            <c:param name="cacheWithParent" value="false" />
                            <c:param name="marketingSpotBehavior" value="0" />
                            <c:param name="pageTimeLimit" value="3600" />
    </c:import>
  11. Si vous avez ajouté des déclencheurs de base de données pour regénérer automatiquement le registre Marketing après la propagation des données, supprimez les déclencheurs avec l'invalidation WCR+CampaignInitiativeCache. L'effacement du registre CampaignInitiativeCache n'est plus requis.