Configurar la invalidación de memoria caché para la HCL Commerce Search
HCL Commerce utiliza el servicio de memoria caché dinámica de WebSphere Application Server para almacenar en memoria caché servlets o archivos JSP y mandatos que se extienden de la interfaz CacheableCommand de WebSphere Application Server. El servicio de memoria caché dinámica, el almacenamiento en memoria caché de servlets y la descarga de disco se habilitan de forma predeterminada, durante la creación de una instancia de HCL Commerce.
- Memoria caché de resultado de servlet y JSP: Para almacenar en memoria caché páginas enteras o fragmentos generados por un servlet o una página JSP.
- Memoria caché de mandato: Para almacenar en memoria caché objetos de mandato.
- Almacenamiento en memoria caché del Edge Side Include (ESI): Para almacenar en memoria caché, ensamblar y entregar páginas web dinámicas en el borde de una red de empresa.
- Soporte de invalidación: Para asegurar que el contenido de la memoria caché es correcto. La invalidación puede estar basada en normas, basada en tiempo, basada en grupos o programática.
- Capacidad de descarga del disco: Para habilitar el almacenamiento en memoria caché de grandes cantidades de datos.
Puede automatizar la invalidación de memoria caché de escaparate para el contenido almacenado en memoria caché de HCL Commerce utilizando memoria caché dinámica durante el proceso de reindexación de búsqueda.
El comportamiento de memoria caché del servicio de memoria caché dinámica de WebSphere Application Server lo especifican las políticas de memoria caché definidas por los elementos <cache-entry>
en los archivos XML (cachespec.xml) de configuración de especificación de memoria caché.
Procedimiento
-
Defina una política de memoria caché en cachespec.xml para un archivo JSP con el identificador de dependencia correcto para las actualizaciones del índice de búsqueda de emergencia (delta).
Por ejemplo:
- Para invalidar la página ProductDisplay a la que se ha asignado un identificador de entrada de catálogo:
<dependency-id>ProductDisplay:productId:langId <component id="" ignore-value="true" type="pathinfo"> <required>true</required> <value>/ProductDisplay</value> </component> <component id="productId" type="parameter"> <required>true</required> </component> <component id="DC_lang" type="attribute"> <required>true</required> </component> </dependency-id>
- Para invalidar la página CategoryDisplay a la que se ha asignado un identificador de grupo de catálogo:
<dependency-id>CategoryDisplay:categoryId:langId <component id="" ignore-value="true" type="pathinfo"> <required>true</required> <value>/CategoryDisplay</value> <value>/SearchDisplay</value> </component> <component id="categoryId" type="parameter"> <required>true</required> </component> <component id="DC_lang" type="attribute"> <required>true</required> </component> </dependency-id>
- Para invalidar la página TopCategoriesDisplay:
<dependency-id>TopCategoriesDisplay:langId <component id="" ignore-value="true" type="pathinfo"> <required>true</required> <value>/TopCategoriesDisplay</value> </component> <component id="DC_lang" type="attribute"> <required>true</required> </component> </dependency-id>
- Para invalidar la página ProductDisplay a la que se ha asignado un identificador de entrada de catálogo:
-
Defina un identificador de invalidación correspondiente que se va a generar proporcionando una plantilla para las dos propiedades siguientes en el archivo wc-component.xml:
- CacheInvalidationForCatalogEntry
-
Hay dos plantillas de invalidación que se proporcionan con esta propiedad. La primera es para invalidar la página ProductDisplay. La segunda se utiliza para invalidar las categorías padre inmediatas.
Las variables de contexto predefinidas que se pueden utilizar en esta plantilla de identificador de invalidación incluyen:- catEntryId
- Identificador interno para la entrada de catálogo modificada.
- catGroupId
- Identificador interno para la categoría padre inmediata a través de todos los catálogos.
- langId
- Identificador de lenguaje interno para la entrada de modificador.
- storeId
- identificador de tienda interno para la entrada de modificador.
- catalogId
- Identificador de catálogo interno para la entrada de modificador.
Condición para la invalidación completa:if (cacheInvalidationForCatalogEntry != null && cacheInvalidationForCatalogEntry.length() > 0) { try { if (ibFullBuild) { // Full cache invalidation if (cacheInvalidationForAll != null && cacheInvalidationForAll.length() > 0) {
- CacheInvalidationForCatalogGroup
- Hay dos plantillas de invalidación que se proporcionan con esta propiedad. La primera es para invalidar la página CategoryDisplay para la categoría actual y todas las categorías padre inmediatas a través de todos los catálogos. La segunda se utiliza para invalidar TopCategoriesDisplay, que se utiliza en la página de presentación en la que las categorías afectadas podrían estar presentes.
- CacheInvalidationForAll
- Un operador de invalidación de memoria caché para la invalidación completa de la memoria caché. Cuando el tiempo de ejecución de búsqueda determina que se necesita una invalidación de memoria caché completa y se ha establecido CacheInvalidationForAll (el valor predeterminado se establece en clearall), este valor se establece en CACHEIVL.DATA_ID para solicitar que se borre toda la memoria caché.Si no se establece este valor o se deja como una serie vacía (
""
, no se realiza la invalidación completa de la memoria caché.""
Nota: Para permitir que se realice la invalidación de memoria caché completa mediante el mandato de planificador DynaCacheInvalidationCmd, asegúrese de queenableRefreshRegistry=false
se pasa como uno de los parámetros de trabajo. - CacheInvalidationDelay
- El retardo, en milisegundos, antes de que se produzca la invalidación de memoria caché después de cada reindexación de búsqueda.
- CacheInvalidationForStoreHeader
- La plantilla de invalidación StoreHeader se utiliza para automatizar la invalidación de memoria caché para el contenido en caché de escaparate utilizando DynaCache como parte del procedimiento de reindexación de búsqueda.
Por ejemplo:Cambie el fragmento predeterminado siguiente:
Por el fragmento siguiente:<_config:property name="CacheInvalidationForCatalogEntry" value="" /> <_config:property name="CacheInvalidationForCatalogGroup" value="" />
<_config:property name="CacheInvalidationForCatalogEntry" value="ProductDisplay:productId:langId:$catEntryId$:$langId$" /> <_config:property name="CacheInvalidationForCatalogGroup" value="CategoryDisplay:categoryId:langId:$catGroupId$:$langId$" />
Qué hacer a continuación
Para obtener más información sobre la memoria caché dinámica, consulte Almacenamiento en memoria caché dinámica.
Después de configurar la invalidación de memoria caché para la HCL Commerce Search, puede iniciar el proceso de reindexación mediante Creación del índice de búsqueda.