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
Procedimiento
-
Abra el archivo de configuración de memoria caché
cachespec.xml
en el directorio siguiente:- workspace_dir/crs-web/WebContent/WEB-INF/
-
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
estrue
. - La propiedad
do-not-cache
estrue
. - El
metadatagenerator
se especifica comocom.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>
- La propiedad
-
Incluya las entradas de memoria caché que se han definido en el archivo
cachespec.xml
en el directorio siguiente:- WCDE_installdir\samples\dynacache\marketing\Nota: 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étodogetMarketingSpotBehavior
como un componente de memoria caché en las entradas de memoria caché del mandatoFilterXXXCmdImpl
.<!-- NEW: for e-Marketing Spot caching --> <component id="getMarketingSpotBehavior" type="method"> <value>1</value> </component>
- WCDE_installdir\samples\dynacache\marketing\
-
Guarde y cierre el archivo.
cachespec.xml
-
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());}
-
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}"/>
-
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.
Al añadir esté código, el fragmento de código JSP puede utilizar la etiqueta<wcf:eMarketingSpotCache marketingSpotData="${marketingSpotDatas}" contentDependencyName="contentId" catalogEntryDependencyName="productId" categoryDependencyName="categoryId" />
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 decatalogEntryDependencyName
ycategoryDependencyName
en los nombres utilizados de las reglas de invalidación de archivoscachespec.xml
para invalidar productos y categorías. - Guarde y cierre cada archivo de fragmento JSP de zona de e-Marketing.
-
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 archivowc-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 - 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 defalse
. - 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 de0
para el comportamiento estático y un valor de1
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ámetromarketingSpotBehavior
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ámetropageTimeLimit
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>
- 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
-
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 deCampaignInitiativeCache
ya no es necesario.