Almacenamiento en memoria caché e invalidación de diseño de Commerce Composer

La JSP de visualización de página es la principal JSP de la solución de Commerce Composer y se correlaciona con una vista en views-ext.xml. Es responsable de recuperar los detalles de diseño para cada solicitud de página de infraestructura Commerce Composer. El escaparate contiene JSP de visualización de página para tipos de páginas individuales, como categoría, producto y páginas de contenido. En instancias select, los diseños recuperados pueden almacenarse en memoria caché para obtener un mejor rendimiento de la tienda.
Una JSP de visualización de página realiza una solicitud a la infraestructura de Commerce Composer para identificar y representar un diseño ganador que se base en el tipo objectId y pageGroup pasado. A continuación se proporcionan un par de ejemplos:
  • productId = 10001, pageGroup = Product
  • categoryId = 10002, pageGroup = Category

El diseño resultante se puede almacenar en memoria caché automáticamente si com.ibm.commerce.pagelayout.cache.PageDesignMetaDataGenerator determina que el diseño ganador es el mismo para todos los clientes. La infraestructura de actividad de marketing evalúa la actividad de diseño y, si se determina que es estática, el diseño se puede almacenar en memoria caché.

En función de si el diseño individual se almacena en memoria caché, PageDesignMetaDataGenerator modifica la entrada de JSP de visualización de página en el archivo de configuración de cachespec.xml.

Si la página no se va a almacenar en la memoria caché, la propiedad do-not-cache se establece en true.

Si la página se va a almacenar en la memoria caché, la propiedad do-not-cache se establece en false. Además, PageDesignMetaDataGenerator añade los ID de dependencia necesarios a la entrada de memoria caché. Estos ID de dependencia ayudan en la invalidación del diseño almacenado en memoria caché cuando se cambia el diseño o si se modifica el diseño.
ID de dependencia Descripción:

emsName:name

La infraestructura de actividades de marketing evalúa cada zona e-marketing de diseño para determinar el diseño y se añade como dependencia. Si se asocia un diseño diferente con este objectId and pageGroup, este ID de dependencia acciona una invalidación de memoria caché.

pageLayoutId:layoutId

Se genera un ID de dependencia único de una etiqueta dentro del JSP de diseño. Cada diseño debe incluir esta etiqueta en su JSP en el formato siguiente:
<wcpgl:pageLayoutCache pageLayoutId="${pageDesign.layoutID}"/>

Si el usuario comercial modifica el diseño asociado, este ID de dependencia desencadena una invalidación de caché.

Si el diseño no se almacena en memoria caché, su contenido todavía se puede almacenar en memoria caché de forma independiente como fragmentos. Consulte Almacenamiento en memoria caché e invalidación de widget para obtener más detalles.

A continuación se muestra una entrada de memoria caché de ejemplo para el diseño ProductDisplay. Consulte el archivo de configuración de cachespec.xml para obtener más detalles y ejemplos.
<cache-entry>
		<class>servlet</class>
		<name>com.ibm.commerce.store.servlet.StoreDispatcherServlet.class</name>

<!-- Displays catentry details using either ProductDisplay.jsp or BundleDisplay.jsp or PackageDisplay.jsp 
The purpose of ProductDisplay command is to retrieve the configured display Page for the specified Product/Bundle/Package/Item in in the specified catalog. 
That display page will in turn be launched to display the catentry information. It looks at DISPENTREL table to get the JSP pages to display the product. -->

	<cache-id>
			<component id="" type="pathinfo">
				<required>true</required>
				<value>/ProductDisplay</value>
			</component>
			<component id="storeId" type="parameter">
				<required>true</required>
			</component>
			……
			……
			<component id="productId" type="parameter"> 
				<required>true</required>
			</component>
			<component id="categoryId" type="parameter">
				<required>false</required>
			</component>
			<metadatagenerator>com.ibm.commerce.pagelayout.cache.PageDesignMetaDataGenerator</metadatagenerator>
		</cache-id>
Nota: El uso de diseños con límites de tiempo definidos para la Página de inicio ( TopCategoriesDisplay.jsp) requiere un parámetro de configuración adicional para permitir que PageDesignMetaDataGenerator establezca el tiempo de espera de entrada de memoria caché.
En el SEOURLPatterns.xml archivo de configuración, añada el parámetro pageId a las entradas adecuadas:
<seourl:seoUrlPatternDef name="HomePageURLWithLang">
  <seourl:seoUrlPattern viewName="TopCategoriesDisplay">/LanguageToken/StoreToken:CatalogToken</seourl:seoUrlPattern>  
  <seourl:urlToParamMapping>
    <seourl:mapping name="langId" value="?LanguageToken?"/>
    <seourl:mapping name="storeId" value="?StoreToken?"/>
    <seourl:mapping name="catalogId" value="?CatalogToken?"/>
    <seourl:mapping name="pageName" value="HomePage"/>
    <seourl:mapping name="pageGroup" value="Content"/>
    <seourl:mapping name="pageId" value="pageId"/>
  </seourl:urlToParamMapping>
...
<seourl:seoUrlPatternDef name="HomePageURLWithLang">
  <seourl:seoUrlPattern viewName="TopCategoriesDisplay">/LanguageToken/StoreToken:CatalogToken</seourl:seoUrlPattern>  
  <seourl:urlToParamMapping>
    <seourl:mapping name="langId" value="?LanguageToken?"/>
    <seourl:mapping name="storeId" value="?StoreToken?"/>
    <seourl:mapping name="catalogId" value="?CatalogToken?"/>
    <seourl:mapping name="pageName" value="HomePage"/>
    <seourl:mapping name="pageGroup" value="Content"/>
    <seourl:mapping name="pageId" value="pageId"/>
  </seourl:urlToParamMapping>
...

Donde pageId es el valor de ID de página para la Página de inicio.

El ID de página para la Página de inicio se puede encontrar ejecutando la siguiente sentencia SQL para la tienda:
SELECT PLPAGE_ID, STOREENT_ID FROM PLPAGE 
WHERE ADMINNAME = 'HomePage' AND STOREENT_ID IN 
(SELECT RELATEDSTORE_ID FROM STOREREL WHERE STORE_ID = store_Id AND STRELTYP_ID = -11)