Configuración del servicio de memoria caché dinámica en cachespec.xml

El servicio de memoria caché dinámica es un sistema de memoria caché que permite descargar datos a disco. Los objetos almacenables en la memoria caché se definen en el archivo cachespec.xml.

Puede encontrar cachespec.xml dentro del archivado de aplicación web (WAR), el directorio WEB-INF de módulo web o en el directorio WEB-INF de bean enterprise. La versión del servicio de consulta de Elasticsearch del archivo se encuentra en /opt/WebSphere/Liberty/usr/servers/default/apps/search-query.ear/search-query.war/WEB-INF/cachespec.xml. Puede modificar cualquier versión del archivo, aunque la versión del servicio de consulta no se conserva automáticamente a través de las actualizaciones del contenedor Docker. Debe mantener manualmente esta versión para conservar sus modificaciones.

Un archivo cachespec.xml también se puede colocar en el directorio properties del servidor de aplicaciones, pero el método recomendado es poner el archivo de configuración de memoria caché con el módulo de despliegue. Hay un archivo de configuración de memoria caché de muestra (cachespec.sample.xml) en el directorio WAS_installdir/properties. El archivo cachespec.dtd está disponible en el directorio properties del servidor de aplicaciones. Las secciones siguientes describen los pasos necesarios para configurar la memoria caché dinámica en el archivo cachespec.xml.

Habilitación del servicio de memoria caché dinámica

El servicio de memoria caché dinámica y la puesta en memoria caché de servlets están ambos habilitados de forma predeterminada en el entorno de producción. Si habilita el almacenamiento en memoria caché dinámica en el entorno de autoría, podría encontrar invalidaciones perdidas y no tendría acceso a la modalidad de vista previa que tiene en el entorno de producción. Además, en el caso del servicio de consulta de Elasticsearch, baseCache solo está habilitado para el entorno de producción. Para obtener más información sobre este parámetro, consulte integración de la versión 9 de HCL Commerce con Websphere eXtreme Scale.

HCL Commerce DeveloperNota: El almacenamiento en memoria caché de servlets está inhabilitado en el entorno de desarrollador. Para habilitar y utilizar el almacenamiento en memoria caché de servlets, consulte Habilitar el servicio de memoria caché dinámica y la puesta en memoria caché de servlets.

Definir los elementos de las entradas de la memoria caché

El elemento raíz del archivo cachespec.xml, <cache>, contiene elementos <cache-entry>. El servicio de memoria caché dinámica de WebSphere analiza el archivo cachespec.xml durante el arranque del sistema y extrae un conjunto de parámetros de configuración para cada elemento <cache-entry>.

Definir las reglas de creación de los ID de la memoria caché

A medida que el servicio de memoria caché dinámica coloca los objetos en la memoria caché, etiqueta los objetos con un identificador exclusivo (ID de memoria caché) que se crea de acuerdo con las reglas de <cache-id> especificadas en los elementos <cache-entry>. Después de que un objeto con un ID de memoria caché determinado se encuentre en la memoria caché, se sirve una solicitud posterior para un objeto con el mismo ID de memoria caché desde la memoria caché. Las reglas <cache-id> definen cómo crear los ID de memoria caché a partir de información que está asociada con una solicitud de servidor de aplicaciones, incluido cómo se puede obtener la información por programa a partir de objetos CacheableCommand.

  • Cada <cache-entry> puede especificar varios elementos <cache-id> para definir varias reglas de generación de ID de memoria caché. Se ejecutan en el orden en el que aparecen en el elemento <cache-entry> hasta que una regla genera un ID de memoria caché válido o se ejecutan todas las reglas.
  • Si ninguna de las reglas de creación produce un ID de memoria caché válido, el objeto no se coloca en memoria caché.
  • Cada elemento <cache-id> define una regla para colocar un objeto en memoria caché y está formado por los subelementos <component>, <timeout>, <priority> y <property>.
  • El subelemento <component> puede aparecer muchas veces dentro del elemento <cache-id> . Cada vez que especifica cómo generar un componente de un ID de memoria caché. Existen varios tipos diferentes de elementos component, tales como parámetro, sesión, atributo, entorno local, método y campo.
La tabla siguiente muestra los atributos de solicitud:
Atributos de petición Descripción:
DC_curr Divisa preferida del usuario
DC_lang Idioma preferido del usuario
DC_porg Empresa matriz del usuario
DC_cont Contrato actual del usuario
DC_mg Grupos de miembros explícitos del usuario
DC_storeId Identificador de la tienda
DC_userId Identificador del usuario
s Contratos elegibles del comprador (solamente es válido para el modelo de negocio de cadena de oferta)

Los subelementos <timeout>, <priority> y <property> se pueden utilizar para controlar la caducidad de las entradas de la memoria caché, la política de vaciado de la memoria caché y otras propiedades genéricas correspondientes a un objeto almacenado en memoria caché cuyo identificador es generado por el elemento <cache-id> donde reside el subelemento. Para obtener más información sobre el elemento <cache-id> y sus subelementos, consulte el tema cachespec.xml.

El ejemplo siguiente de <cache-entry> utiliza un elemento <cache-id> para almacenar en memoria caché los resultados que crea una JSP y generar un ID de memoria caché con dos componentes, "storeId" y "catalogId", obtenidos a partir de parámetros del objeto de solicitud:

<cache-entry>
        <class>servlet</class>
        <name>/ToolTech/. .
./StoreCatalogDisplay.jsp</name>
        <property
name="save-attributes">false</property>
        <property name="store-cookies">false</property>
        <timeout>3600</timeout>
        <priority>3</priority>
        <cache-id>
                <component id="storeId" type="parameter">
                        <required>true</required>
                </component>
                <component id="catalogId" type="parameter">
                        <required>true</required>
                </component>
        </cache-id>
...
</cache-entry>

Definir reglas de generación para los ID de dependencia y los ID de invalidación

Los elementos de ID de dependencia se utilizan para especificar identificadores adicionales de grupo de memoria de caché que asocian varias entradas de memoria caché a un mismo identificador de grupo.

Los ID de dependencia se crean concatenando la serie de caracteres base del ID de dependencia con los valores devueltos por sus elementos de componente. Si un componente necesario devuelve un valor nulo, no se crea el ID dependencia y no se utiliza. Puede validar explícitamente los ID de dependencia mediante la API de memoria caché dinámica de WebSphere o utilizar otro elemento <invalidation>. Los ID de dependencia son esenciales porque la invalidación no se puede producir sin ellos.

Los ID de invalidación se utilizan con los ID de dependencia para eliminar objetos invalidados de la memoria caché.

Los ID de invalidación se crean de acuerdo con reglas especificadas por elementos <invalidation> contenidos dentro de elementos <cache-entry>. Cuando se recibe una solicitud que coincide con un elemento <cache-entry>, los ID de invalidación generados para el elemento se comparan con los ID de dependencia asociados anteriormente a objetos contenidos en la memoria caché. Se invalidarán los objetos en memoria caché que tengan un ID de dependencia asociado que sea igual que uno de los ID de invalidación generados.

Cada <cache-entry> elemento puede contener varios elementos <invalidation>. Cada elemento <invalidation> hace que se cree un ID de invalidación cuando se recibe una solicitud que coincide con su elemento <cache-entry>.

Cada ID de invalidación se crea concatenando su serie de caracteres base con los valores devueltos por sus subelementos <component>, cada uno precedido por dos puntos (":"). Si un componente necesario devuelve un valor nulo, la parte del ID de invalidación generado se descarta.

El ejemplo siguiente de <cache-entry> define un elemento <invalidation> para generar un ID de invalidación "catalogId", cuando se ejecuta el mandato CatalogUpdateCmdImpl:


<cache-entry>
        <class>command</class>
               
<name>com.ibm.commerce.catalogmanagement.commands.CatalogUpdateCmdImpl</name>
        <invalidation>catalogId
                <component id="catalogId" type="parameter">
                        <required>true</required>
                </component>
        </invalidation>
</cache-entry>

En este ejemplo, cuando se recibe una solicitud con parámetros "storeId=10001&catalogId=10010" para ejecutar el mandato especificado com.ibm.commerce.catalogmangement.commands.CatalogUpdateCmdImpl, el ID de invalidación generado es "catalogId:10010". Esto hace que se invalide cualquier objeto en memoria caché que tenga asociado a un ID de dependencia igual a ese valor, con lo cual el objeto se elimina de la memoria caché.

Almacenamiento en memoria caché y servicio de consulta de Elasticsearch.

El almacenamiento en memoria caché dinámica está habilitado de forma predeterminada para el servicio de consulta de Elasticsearch, solo en el entorno real. No lo habilite para el entorno de autoría, porque podría encontrar invalidaciones que no se han detectado y no tendrá acceso al modo de vista previa que tiene en el entorno real.