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.

El servicio de memoria caché dinámica incluye las características siguientes:
  • 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

  1. 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>
  2. 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.
    Las variables de contexto predefinidas que se pueden utilizar en esta plantilla de identificador de invalidación incluyen:
    catGroupId
    Identificador interno para el grupo de catálogo modificado y 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.
    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 que enableRefreshRegistry=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.
    Para determinar un tiempo de retardo razonable, tenga en cuenta los siguientes factores:
    • La hora en que se ejecuta el siguiente mandato de planificador de reindexación. Por ejemplo, 5 minutos.
    • La cantidad aproximada de tiempo que la reindexación puede tardar en completarse. Por ejemplo, 2 minutos.
    • La próxima vez que se produzca una réplica entre el índice de búsqueda de producción y el repetidor. Por ejemplo, 1 minuto.
    • La cantidad aproximada de tiempo que la réplica de índice puede tardar en completarse. Por ejemplo, 3 minutos.
    En este ejemplo, el retardo de invalidación estimado es el total de 5, 2, 1 y 3 minutos. Esto equivale a 11 minutos, o 660000 milisegundos.
    El valor predeterminado es 0.
    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.
    Las variables de contexto predefinidas que se pueden utilizar en esta plantilla de identificador de invalidación incluyen:
    storeId
    identificador de tienda interno para la entrada de modificador.
    catalogId
    Identificador de catálogo interno para la entrada de modificador.
    langId
    Identificador de lenguaje interno para la entrada de modificador.
    Por ejemplo:
    Cambie el fragmento predeterminado siguiente:
    
    <_config:property name="CacheInvalidationForCatalogEntry" value="" />
    <_config:property name="CacheInvalidationForCatalogGroup" value="" />
    
    Por el fragmento siguiente:
    
    <_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.