Configuración de almacenamiento en memoria caché de fragmentos de JSP basado en el comportamiento de las actividades

Puede mejorar el rendimiento almacenando en memoria caché una zona de e-Marketing en el escaparate basándose en el comportamiento de las actividades, que incluye actividades web y contenido de marketing.

Antes de empezar

  • Habilite la característica store-enhancements.

Por qué y cuándo se efectúa esta tarea

Para configurar este tipo de almacenamiento en memoria caché, los ID de dependencia están establecidos de forma dinámica para invalidar la JPS almacenada en memoria caché cuando cambia la definición de zona de e-Marketing. Estos cambios de definición pueden deberse a sucesos tales como cambios de actividad web, cambios de contenido predeterminados, cambios de contenido, cambios de producto y cambios de categoría. El límite de tiempo de página está establecido para invalidar la página en el siguiente momento planificado en que una actividad se añade o elimina de la zona de e-Marketing. Cuando la página se recargue, el nuevo conjunto de actividades entraré en vigor para la zona de e-Marketing.

Procedimiento

  1. Abra el archivo de configuración de memoria caché cachespec.xml en el directorio siguiente:
    • workspace_dir/crs-web/WebContent/WEB-INF/
  2. Para cada fragmento de JSP de zona de e-Marketing en la tienda, incluya una entrada de memoria caché similar al código siguiente.

    Asegúrese de que se ha especificado lo siguiente:

    • La propiedad do-not-consume es true.
    • La propiedad do-not-cache es true.
    • El metadatagenerator se especifica como 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. Incluya las entradas de memoria caché que se han definido en el archivo cachespec.xml en el directorio siguiente:
    • HCL Commerce DeveloperWCDE_installdir\samples\dynacache\marketing\
      HCL Commerce Version 9.1.13.0 or laterNota: Esta información solo se aplica a versiones anteriores a la versión HCL Commerce 9.1.13.0. Para la versión HCL Commerce 9.1.13.0 y las versiones en adelante, las reglas de la memoria caché de los comandos de marketing se reubican en el archivo cachespec.xml, contenido en el archivo InitializationServlet.war utilizado por el servidor de transacciones. Si las reglas de la memoria caché de marketing se introdujeron anteriormente de forma manual y personalizable, estas deberán eliminarse para que las reglas de InitializationServlet tengan prioridad.
    Nota: Si ha incluido estas entradas de memoria caché anteriormente, el único cambio necesario es incluir el método getMarketingSpotBehavior como un componente de memoria caché en las entradas de memoria caché del mandato FilterXXXCmdImpl.
    <!-- NEW: for e-Marketing Spot caching -->
                <component id="getMarketingSpotBehavior" type="method">
                   <value>1</value>
                </component>
  4. Guarde y cierre el archivo.cachespec.xml
  5. En cada fragmento JSP de zona de e-Marketing, localice el código siguiente:
    <%
       /* 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);
       }
    Añada el código siguiente después del código localizado.
    	Object DM_marketingSpotBehavior = request.getAttribute("DM_emsBehavior-" + emsName);
      	 if (DM_marketingSpotBehavior != null) 
    	{request.setAttribute("DM_marketingSpotBehavior", DM_marketingSpotBehavior.toString());}
  6. En cada fragmento JSP de zona de e-Marketing, localice el código siguiente:
    <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}" />
    Añada el código siguiente después del código localizado.
    <wcf:param name="DM_marketingSpotBehavior" value="${requestScope.DM_marketingSpotBehavior}"/>
  7. En cada fragmento JSP de la zona de e-Marketing, localice el extremo de la etiqueta <getData>:
    </wcf:getData>
    </c:otherwise>
    </c:choose>
    Añada el código siguiente después del código localizado.
    <wcf:eMarketingSpotCache marketingSpotData="${marketingSpotDatas}" contentDependencyName="contentId" catalogEntryDependencyName="productId"  categoryDependencyName="categoryId" />
    Al añadir esté código, el fragmento de código JSP puede utilizar la etiqueta eMarketingSpotCache para determinar dinámicamente si el fragmento de código JSP puede almacenarse en memoria caché. Para obtener más información sobre este código, consulte Etiqueta: eMarketingSpotCache.
    Nota: Establezca los valores de catalogEntryDependencyName y categoryDependencyName en los nombres utilizados de las reglas de invalidación de archivos cachespec.xml para invalidar productos y categorías.
  8. Guarde y cierre cada archivo de fragmento JSP de zona de e-Marketing.
  9. Si el filtrado está habilitado para efectuar una acción dinámica, el archivo wc-admin-component.xml debe configurarse para establecer la acción como dinámica. Para obtener más información sobre cómo configurar el archivo wc-admin-component.xml, consulte Cambio de propiedades en el archivo de configuración del componente de 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"/>
    El comportamiento para los filtros correspondientes se especifica en la tabla siguiente:
    Objeto Filter Comportamiento
    Catalog Entry removeIfNoInventory Depende del requisito de negocio – si evalúa cada solicitud, establézclalo en dinámico. De lo contrario, este filtro puede basarse en un tiempo de espera de página.
    Catalog Entry removeIfExistInShopcart Dinámica – se evalúa para cada comprador
    Catalog Entry removeIfExistInPurchaseHistory Dinámica – se evalúa para cada comprador
    Catalog Entry removeIfPastEndDate Depende del requisito de negocio – si evalúa cada solicitud, establézclalo en dinámico. De lo contrario, este filtro puede basarse en un tiempo de espera de página.
    Catalog Entry removeIfNotInCurrentCatalog Estática
    Category removeIfNotInCurrentCatalog Estática
    Contenido removeIfPromotionNotAvailable Depende del requisito de negocio – si evalúa cada solicitud, establézclalo en dinámico. De lo contrario, este filtro puede basarse en un tiempo de espera de página.
    Contenido removeIfPromotionBeforeStartDate Depende del requisito de negocio – si evalúa cada solicitud, establézclalo en dinámico. De lo contrario, este filtro puede basarse en un tiempo de espera de página.
    Contenido removeIfMemberNotInPromotionSegment Dinámica – se evalúa para cada cliente
    Contenido removeIfPromotionNotEntitledCatalogEntryOrCategory Dinámica – se evalúa para cada cliente
  10. Opcional: Algunos parámetros opcionales para una zona de e-Marketing pueden configurarse de la manera siguiente:
    • Si la JSP de zona de e-Marketing está incluida en una página almacenada en caché de servlet, una zona de e-Marketing estática tiene la JSP que ha consumido la página padre. Si desea siempre almacenar en memoria caché la JSP de zona de e-Marketing por separado, defina un parámetro cacheWithParent con un valor de false.
    • Si una zona de e-Marketing debe especificarse estática o dinámica sin basarse en una determinación automática, pase el parámetro marketingSpotBehavior al importar el fragmento JSP de zona de e-Marketing. Especifique un valor de 0 para el comportamiento estático y un valor de 1 para el comportamiento dinámico. El Director de marketing también puede especificar si el contenido de marketing es estático o dinámico en el Centro de gestión. Para obtener más información, consulte Creación de contenido de marketing para mostrarlo en páginas de la tienda.
    • El tiempo de espera para el fragmento almacenado en memoria caché es la fecha de inicio o de finalización de cualquier actividad planificada en la zona de e-Marketing tras la hora actual. El tiempo de espera sólo se establece si la hora es anterior al tiempo de espera excedido actual de la página. Normalmente el tiempo de espera está establecido en el archivo cachespec.xml, pero también se puede especificar al incluir la JSP de zona de e-Marketing.

    A continuación se muestra un ejemplo de cómo establecer los parámetros opcionales para una zona de e-Marketing. El parámetro cacheWithParent se establece para almacenar en memoria caché ContentAreaESpot.jsp por separado de la página inicial. El parámetro marketingSpotBehavior está configurado de forma que la zona está siempre almacenada en memoria caché y no comprueba el comportamiento de las actividades de la zona de e-Marketing. El parámetro pageTimeLimit está configurado de forma que el límite de tiempo predeterminado está establecido en una hora.

    <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 ha añadido desencadenantes de base de datos para renovar automáticamente el registro de Marketing después de una propagación de datos, elimine los desencadenantes con la invalidación WCR+CampaignInitiativeCache. El borrado del registro de CampaignInitiativeCache ya no es necesario.